前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【已解决】mas_updateConstraints更新约束引起的约束冲突

【已解决】mas_updateConstraints更新约束引起的约束冲突

作者头像
君赏
发布2018-09-07 14:32:02
2.6K0
发布2018-09-07 14:32:02
举报
文章被收录于专栏:君赏技术博客君赏技术博客

typora-copy-images-to: ipic

问题描述

最近发现购物车的列表非常的卡顿,才觉得解决约束冲突是多么重要的。

  • 存在多店铺活动的

79DF33F7-1626-4FFD-9B01-1B115617F764

  • 不存在店铺活动

671020DE-4D31-49ED-8391-E4BC68406408

在这个试图上面 Promo 按钮和后面的文字后面可能会出现一个小图标。

初始化显示文字的 UILable 约束如下。

代码语言:javascript
复制
label.leading.equalTo(promoButton.mas_traling).offset(10);

最后获取到服务器信息之后我是下面的更新约束。

代码语言:javascript
复制
if(isCrossShop) {
    label.leading.equalTo(crossShopImageView.mas_traling).offset(10);
} else {
    label.leading.equalTo(promoButton.mas_traling).offset(10);
}

代码看是没什么问题的,并且界面表现都是十分正常的。为什么输出会报约束冲突呢。

后来发现约束冲突出现的原因如下。

  • mas_updateConstraints使用初始化没有出现的约束。 比如初始化 UIlabel 初始化的时候只设置了 Topleading 约束。 但是之后更新添加了 width 约束,这样就回报约束冲突。
  • mas_updateConstraints更新约束对比对象 比如初始化参照 View1的右侧约束,更新约束的时候换成了 View2就造成了约束冲突。

我们上面的约束冲突就是第二种冲突约束。

解决办法

如果更新约束 需要设置新的约束条件和更换约束对比对象,可以使用mas_remakeConstraints这个方法。

mas_remakeConstraints这个对比更新约束会慢很多,但是造成约束卡很多。还是mas_remakeConstraints比较好。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.04.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • typora-copy-images-to: ipic
  • 问题描述
  • 解决办法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档