我一直引用我NSLayoutConstraint
如何激活先前禁用的約束?
var flag = true
@IBOutlet weak var myConstraint: NSLayoutConstraint!
那麼對於一些@IBAction
我激活/停用根據我的flag
變量:
@IBAction func tapped(sender: UIButton) {
flag = !flag
UIView.animateWithDuration(1.0) {
if self.flag {
NSLayoutConstraint.activateConstraints([self. myConstraint])
} else {
NSLayoutConstraint.deactivateConstraints([self. myConstraint])
}
}
}
但是,當我再次打電話給我的動作,我有一個錯誤unexpectedly found nil while unwrapping an Optional value
爲myConstrain
。
更多關於它不動畫。我究竟做錯了什麼?
我按照教程從2015年WWDC:
在IBOutlet聲明中保留對象的強引用。 '@IBOutlet strong var myConstraint:NSLayoutConstraint!' – Gandalf
甘道夫的評論是正確的。取消激活約束必須使視圖層次結構釋放它的所有權。如果你不保留一個強有力的參考,它將被釋放。 @Gandalf,你應該讓這個答案讓OP能夠接受它。 –