簡體   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