使用Masonryframe跟bounds为0的情况

AutoLayout关于更新的几个方法的区别

setNeedsLayout:告知页面需要更新,但是不会立刻开始更新。执行后会立刻调用layoutSubviews。

layoutIfNeeded:告知页面布局立刻更新。所以一般都会和setNeedsLayout一起使用。如果希望立刻生成新的frame需要调用此方法,利用这点一般布局动画可以在更新布局后直接使用这个方法让动画生效。

layoutSubviews:系统重写布局

setNeedsUpdateConstraints:告知需要更新约束,但是不会立刻开始

updateConstraintsIfNeeded:告知立刻更新约束

updateConstraints:系统更新约束

Masonry使用注意事项

用mas_makeConstraints的那个view需要在addSubview之后才能用这个方法

mas_equalTo适用数值元素,equalTo适合多属性的比如make.left.and.right.equalTo(self.view)

方法and和with只是为了可读性,返回自身,比如make.left.and.right.equalTo(self.view)和make.left.right.equalTo(self.view)是一样的。

因为iOS中原点在左上角所以注意使用offset时注意right和bottom用负数。


例如,获取_detail的frame

_detail = [UILabel new];

    _detail.numberOfLines = 0;

    _detail.font = [UIFont systemFontOfSize:16.f];

    [_bgScro addSubview:_detail];

    [_detail mas_makeConstraints:^(MASConstraintMaker *make) {

        make.left.equalTo(self.view.mas_left).with.offset([Scale myWidth:10.f]);

        make.right.equalTo(self.view.mas_right).with.offset( - [Scale myWidth:10.f]);

        make.top.equalTo(_time.mas_bottom).with.offset([Scale myWidth:10.f]);

    }];


-(void)webFrame{

    [self.view layoutIfNeeded];

    CGFloat frameY = _detail.frame.origin.y + _detail.bounds.size.height;

    _webView.frame = CGRectMake(0, frameY, kScreenW, kScreenH - frameY);

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值