masonry 使用remake时容易犯的一种错误
2018-01-08 16:29
162 查看
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布局时易犯的错误,记录下来以便以后不犯。
可以看到我整个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布局时易犯的错误,记录下来以便以后不犯。
相关文章推荐
- C语言指针一种容易错误使用的方法
- 使用JNDI的一个容易忽略的错误
- 使用GCD的时候容易犯的小错误总结
- 使用makefile和不使用makefile时,容易犯的一个错误。
- 【C】使用自加(++)和自减(--)运算符时容易出的错误
- Python中使用数字容易犯的错误
- CString对象的一种错误的使用方式
- 55. 让接口容易正确使用且难以错误使用
- 使用JdbcTemplate出现too many connections错误的一种
- 使用流进行通讯的一种可能犯的错误 (InputStream + OutputStream)
- Linux下使用Nginx端口转发出现502错误的一种解决办法
- Java 使用内部类时候的容易产生的错误
- 使用git clone出现SSL routines:SSL3_GET_SERVER_CERTIFICATE错误的一种解决办法
- 使用Masonry的mas_updateConstraints错误理解
- 使用scanf时容易出现的错误
- 求助帖,使用 make custom=IK158 gprs remake 时,出现错误。
- 使用NSInteger容易忽视的错误
- 使用blendtrans滤镜转换文字时容易出的错误,或者不能问题
- PICC使用中初学者容易犯得两个错误
- 使用dojo框架出现错误"SyntaxError: Unexpected token <"中的一种解决方法