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

标签 ios swift constraints

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 中创建约束后,尝试将其存储在属性中。

关于ios - 如何以编程方式声明一次约束并在需要时在 Swift 中调用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28128102/

相关文章:

ios - UIScrollview 中的 UITextView 在 iPhone 5S 的可见屏幕下方

ios - 使用模型异步数据和 TableView

swift - 如何访问桌面 View 的平移手势?

ios - 如何将 UIImageView 放在 tableView 的中心

ios - UINavigationController:确定后退按钮是否被按下或 popViewController 动画

postgresql - 使用 group-by 的 Postgres 表约束

Oracle 命名不是空约束?

database-design - 外键与完整性检查约束

ios - 命令/usr/bin/codesign 失败,退出代码为 5

ios - 如何在 iOS 应用程序启动或激活后获取所有推送通知有效负载