以编程方式更改约束后,视图不会更新

时间:2019-02-02 11:28:58

标签: ios constraints nslayoutconstraint

我想以编程方式更改约束的关系,这就是为什么我创建一个新约束并将其替换为旧约束的原因。我有一个要更改的约束的IBOutlet。因为我使用的是多操作系统引擎,所以用于更新约束的代码看起来与普通的objectiv-c或swift有点不同。

setBasketTopConstraint(
        NSLayoutConstraint.constraintWithItemAttributeRelatedByToItemAttributeMultiplierConstant(
            basketTopConstraint().firstItem(),
            basketTopConstraint().firstAttribute(),
            NSLayoutRelation.LessThanOrEqual,
            basketTopConstraint().secondItem(),
            basketTopConstraint().secondAttribute(),
            basketTopConstraint().multiplier(),
            basketTopConstraint().constant()
    )
);

我的问题是,我不能看到从改变约束任何影响。似乎我需要以某种方式刷新自己的观点。我打电话给view().setNeedsLayout()view().layoutIfNeeded(),但没有成功。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您需要确保自己:

  1. 安装任何新约束并激活它们
  2. 停用和/或删除所有旧约束
  3. 致电layoutIfNeeded()

答案 1 :(得分:0)

您是否尝试添加代码以更改视图中的约束将布局子视图?