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

View doesn't update after changing constraints programmatically

我想以编程方式更改约束关系,这就是我创建新约束并用它替换旧约束的原因。我有一个我想要更改的约束的 IBOutlet。因为我使用的是 multi-os-engine,所以我更新约束的代码看起来与普通的 objectiv-c 或 swift.

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

我的问题是,我看不到更改约束有任何效果。看来我需要以某种方式刷新我的观点。我调用了 view().setNeedsLayout()view().layoutIfNeeded() 但没有成功。

有什么建议吗?

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

您需要确保:

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