对于这样的 View ,我的 Controller 中有这样的约束:
someView.widthAnchor.constraint(equalToConstant: view.bounds.width).isActive = true
现在我已在 willLayoutSubviews
中添加了此约束,以在设备旋转时更新它。
但它似乎没有更新,甚至更像是添加了另一个宽度约束,这当然与旧的宽度约束冲突。
现在我真的不知道更新此宽度约束的正确解决方案,但在我看来,我需要先删除约束,然后再次设置它。
如果我这样测试:
someView.constraints.forEach {
someView.removeContraint($0)
}
这按预期工作,只是它当然删除了一些我不想删除的约束......所以也不是解决方案。
最佳答案
Sol1
将宽度约束 Hook 为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
}
}
关于ios - 更新设备方向上的 widthAnchor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50320589/