所以我在控制器中有这样的约束,例如:

someView.widthAnchor.constraint(equalToConstant: view.bounds.width).isActive = true


现在,我在willLayoutSubviews中添加了此约束以在设备旋转时更新它。

但是它似乎并没有更新,甚至更像是添加了另一个宽度约束,这当然与旧的宽度约束冲突。

现在我真的不知道更新此宽度约束的合适解决方案,但是在我看来,我需要先删除约束然后再进行设置。

如果我像这样测试:

someView.constraints.forEach {
    someView.removeContraint($0)
}


这像预期的那样工作,只是它删除了一些我不想删除的约束,所以也没有解决方案。

提前致谢!

最佳答案

溶胶1

将宽度约束钩为IBOutlet并在这样的代码中更改其常量

self.widthCon.constant = //value
self.view.layoutIfNeeded()


溶胶2

删除带有标识符的约束

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/

10-10 20:56