如何更改以编程方式添加的UIButton约束

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何更改以编程方式添加的UIButton约束相关的知识,希望对你有一定的参考价值。

我在代码中添加了对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下面的评论

而已。希望能帮助到你

以上是关于如何更改以编程方式添加的UIButton约束的主要内容,如果未能解决你的问题,请参考以下文章

如何在iOS中以编程方式从UIButton中删除等宽约束

IBOutlet 用于约束并以编程方式将其连接到 UIButton

Swift - UIButton 以编程方式设置约束

以编程方式快速更改纵横比约束

单元格子视图约束在 CellForRowAtIndex 中以编程方式更改

(Swift) 以编程方式将 UIButton 约束到角落