以编程方式更改约束后视图不更新
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()
但没有成功。
有什么建议吗?
您是否尝试添加代码来更改视图中的约束以布局子视图?
您需要确保:
- 安装任何新约束并激活它们
- 停用and/or删除所有旧约束
- 致电
layoutIfNeeded()
我想以编程方式更改约束关系,这就是我创建新约束并用它替换旧约束的原因。我有一个我想要更改的约束的 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()
但没有成功。
有什么建议吗?
您是否尝试添加代码来更改视图中的约束以布局子视图?
您需要确保:
- 安装任何新约束并激活它们
- 停用and/or删除所有旧约束
- 致电
layoutIfNeeded()