所以我在我的控制器中有这样的约束:
someView.widthAnchor.constraint(equalToConstant: view.bounds.width).isActive = true
现在我在willLayoutSubviews
中添加了这个约束,以便在设备轮换时更新它。
但它似乎没有更新,更像是它增加了另一个宽度约束,因为它与旧的宽度约束相冲突。
现在我真的不知道更新此宽度约束的正确解决方案,但在我看来,我需要首先删除约束然后再次设置它。
如果我这样测试这个:
someView.constraints.forEach {
someView.removeContraint($0)
}
这就像预期的那样工作,只是它删除了一些我不想删除的约束..所以也不是解决方案..
提前致谢!
答案 0 :(得分:0)
<强> SOL1 强>
将宽度约束挂钩为IBOutlet
并在此类代码中更改它的常量
self.widthCon.constant = //value
self.view.layoutIfNeeded()
Sol2
删除标识符为
的约束someView.constraints.forEach {
if $0.identifier == "set_id" {
someView.removeConstraint($0)
someView.widthAnchor.constraint(equalToConstant: view.bounds.width).isActive = true
}
}
答案 1 :(得分:0)
如果您引用了superview
someView
,那么您可以简单地指定相等的宽度约束,如下所示:
someView.widthAnchor.constraint(equalTo: superView.widthAnchor)
这样,您可以让Autolayout引擎在设备方向更改时自动更新宽度。