为什么在Swift中以编程方式声明约束时会出错?

时间:2015-01-24 18:38:14

标签: ios swift constraints

我在名为UIViewController的{​​{1}}类中声明了一个约束。这是代码的样子:

Home

但是,我收到此错误:class Home: UIViewController { @IBOutlet weak var buttonUpgrade: UIButton! var constraint = NSLayoutConstraint (item: buttonUpgrade, attribute: NSLayoutAttribute.Bottom, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 500) ... } 。为什么呢?

您可以从此处下载项目:https://www.dropbox.com/s/x7avclri0ijw3pd/DemoConstraints.zip?dl=0

1 个答案:

答案 0 :(得分:2)

如前所述,您无法在函数外部编写此类代码。但是你能做的就是声明你的变量全局(在函数之外):

var constraint:NSLayoutConstraint!

然后你可以在例如viewDidLoad - 方法中初始化它,该方法将被调用一次:

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

执行此操作后,您可以从班级中的任何位置访问约束变量。在使用之前,请确保填充变量。