我在代码中为UIButton添加了约束:
topBtn.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
topBtn.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 50)
])
以后,如果我单击某个按钮,则希望删除此约束并将其更改为
NSLayoutConstraint.activate([
topBtn.topAnchor.constraint(equalTo: self.view2.topAnchor, constant: 50)
])
如何实现呢?我努力了
NSLayoutConstraint.deactivate([
topBtn.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 50)
])
但这没有效果,XCode抱怨我不能满足要求。
最佳答案
将对约束的引用另存为
let topConstraint = topBtn.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 50)
稍后通过使用激活它
NSLayoutConstraint.activate([topConstraint])
最后,当您需要删除常数时,只需说
button.removeConstraint(topConstraint)
然后添加新的约束为
NSLayoutConstraint.activate([
topBtn.topAnchor.constraint(equalTo: self.view2.topAnchor, constant: 50)
])
button.layoutIfNeeded()
关于button.layoutIfNeeded的用法,请参考UpHoldoerOfTruth的以下注释
而已。希望能帮助到你