masonry 使用remake时容易犯的一种错误

remake通常是重新布局使用,比如我用cell展示列表,title放在图片的右边,现在有一种情况,需要title在中间,相对布局变化了

可以看到我整个cell,上面是正常情况,下面是查询失败的记录,失败的时候车标图要跑到前面去,其他的隐藏好做就不说了。

上面的正常情况,布局时车标图片是以前面的图片为标准,放的位置是最左边的图片使用:

[_brandImage mas_makeConstraints:^(MASConstraintMaker *make) {
        make.centerY.mas_equalTo(_logoImage);
        make.left.mas_equalTo(_logoImage.mas_right).offset(W(15));
        make.size.mas_equalTo(CGSizeMake(W(30), H(30)));
    }];这种,当下面的情况发生时,使用:

[_brandImage mas_remakeConstraints:^(MASConstraintMaker *make) {
        make.centerY.mas_equalTo(_centerView);
        make.left.mas_equalTo(_centerView.mas_left).offset(W(15));
        make.size.mas_equalTo(CGSizeMake(W(30), H(30)));
    }];

然后运行。发现masonry报错。不会崩溃,不影响布局,但是会有很多的警告,提示brandimage在centerview的right距离15,然后又变成了logoimage的right距离15,造成布局冲突,需要你来解决。

可以看到,上面正常布局的时候以logoimage为基准,下面变成了以centerview为基准,要想改正这个错误,只要把上下统一以一个控件为基准,不管布局如何变化,始终以一个坐标物作为参照就可以,改正如下:

cell的初始布局,正常情况时:

[_brandImage mas_makeConstraints:^(MASConstraintMaker *make) {
        make.centerY.mas_equalTo(_logoImage);
        make.left.mas_equalTo(_centerView.mas_left).offset(W(70));
        make.size.mas_equalTo(CGSizeMake(W(30), H(30)));
    }];

当出现意外情况时:

[_brandImage mas_remakeConstraints:^(MASConstraintMaker *make) {
        make.centerY.mas_equalTo(_centerView);
        make.left.mas_equalTo(_centerView.mas_left).offset(W(15));
        make.size.mas_equalTo(CGSizeMake(W(30), H(30)));
    }];

这样警告就消失了。这是使用masonry布局时易犯的错误,记录下来以便以后不犯。

 

其他个人博客:http://zhangqq166.cn/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值