如何以编程方式声明一次约束并在 Swift 中需要时调用它?

How do I declare a constraint programmatically once and call it whenever it's needed in Swift?

viewDidLoad 中,我声明了一个约束并以这种方式将其添加到 UIViewController 中:

var constraintButtonPlay = NSLayoutConstraint (item: buttonPlay, 
attribute: NSLayoutAttribute.Bottom, 
relatedBy: NSLayoutRelation.Equal, 
toItem: self.view, 
attribute: NSLayoutAttribute.Bottom, 
multiplier: 1,
constant: 500)

self.view.addConstraint(constraintButtonPlay)

按下按钮时,约束应自行更新。但是,此代码不起作用:

@IBAction func buttonTest(sender: AnyObject) {

    var constraintButtonPlay = NSLayoutConstraint (item: buttonPlay, 
attribute: NSLayoutAttribute.Bottom, 
relatedBy: NSLayoutRelation.Equal, 
toItem: self.view, 
attribute: NSLayoutAttribute.Bottom, 
multiplier: 1,
constant: -500)

}

现在,我意识到再次声明变量并不是理想的解决方案。那么有没有办法声明一次并在@IBAction中调用它?

为什么 @IBAction 代码没有更新约束?

您在两个不同的范围内声明了两个局部变量,因此它们实际上是两个不同的对象并且它们根本不相关,即使您为它们指定了相同的名称。

viewDidLoad 中创建约束后,尝试将其存储在 属性 中。