繁体   English   中英

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

[英]How to change programatically added constraint for 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抱怨我不能满足constarints。

将对约束的引用保存为

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下面的评论

而已。 希望能帮助到你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM