美文网首页成长笔记
【已解决】mas_updateConstraints更新约束引起

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

作者: 君赏 | 来源:发表于2018-04-06 17:18 被阅读164次

    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 初始化的时候只设置了 Topleading 约束。

      但是之后更新添加了 width 约束,这样就回报约束冲突。

    • mas_updateConstraints更新约束对比对象

      比如初始化参照 View1的右侧约束,更新约束的时候换成了 View2就造成了约束冲突。

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

    解决办法

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

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

    相关文章

      网友评论

        本文标题:【已解决】mas_updateConstraints更新约束引起

        本文链接:https://www.haomeiwen.com/subject/daeshftx.html