typora-copy-images-to: ipic
问题描述
最近发现购物车的列表非常的卡顿,才觉得解决约束冲突是多么重要的。
-
存在多店铺活动的
79DF33F7-1626-4FFD-9B01-1B115617F764 -
不存在店铺活动
671020DE-4D31-49ED-8391-E4BC68406408
在这个试图上面 Promo
按钮和后面的文字后面可能会出现一个小图标。
初始化显示文字的 UILable
约束如下。
label.leading.equalTo(promoButton.mas_traling).offset(10);
最后获取到服务器信息之后我是下面的更新约束。
if(isCrossShop) {
label.leading.equalTo(crossShopImageView.mas_traling).offset(10);
} else {
label.leading.equalTo(promoButton.mas_traling).offset(10);
}
代码看是没什么问题的,并且界面表现都是十分正常的。为什么输出会报约束冲突呢。
后来发现约束冲突出现的原因如下。
-
mas_updateConstraints
使用初始化没有出现的约束。比如初始化
UIlabel
初始化的时候只设置了Top
和leading
约束。但是之后更新添加了
width
约束,这样就回报约束冲突。 -
mas_updateConstraints
更新约束对比对象比如初始化参照
View1
的右侧约束,更新约束的时候换成了View2
就造成了约束冲突。
我们上面的约束冲突就是第二种冲突约束。
解决办法
如果更新约束 需要设置新的约束条件和更换约束对比对象,可以使用mas_remakeConstraints
这个方法。
mas_remakeConstraints
这个对比更新约束会慢很多,但是造成约束卡很多。还是mas_remakeConstraints
比较好。
网友评论