我怎样才能激活以前停用的约束?
How can I activate, previously deactivated constraint?
我保留对我的 NSLayoutConstraint
的引用
var flag = true
@IBOutlet weak var myConstraint: NSLayoutConstraint!
然后对于某些 @IBAction
我 activate/deactivate 取决于我的 flag
变量:
@IBAction func tapped(sender: UIButton) {
flag = !flag
UIView.animateWithDuration(1.0) {
if self.flag {
NSLayoutConstraint.activateConstraints([self. myConstraint])
} else {
NSLayoutConstraint.deactivateConstraints([self. myConstraint])
}
}
}
但是当我再次调用我的操作时,myConstrain
出现错误 unexpectedly found nil while unwrapping an Optional value
。
此外,它没有动画。我做错了什么?
我遵循 WWDC 2015 的教程:
停用约束与为视图调用 removeConstraint:
相同。参考documentation。因此,当您删除具有 weak
引用的对象时,将导致对象释放。现在这个对象是 nil
并且激活它根本不会有任何效果。要解决此问题,您需要对约束对象有强引用。
@IBOutlet strong var myConstraint: NSLayoutConstraint!
我保留对我的 NSLayoutConstraint
var flag = true
@IBOutlet weak var myConstraint: NSLayoutConstraint!
然后对于某些 @IBAction
我 activate/deactivate 取决于我的 flag
变量:
@IBAction func tapped(sender: UIButton) {
flag = !flag
UIView.animateWithDuration(1.0) {
if self.flag {
NSLayoutConstraint.activateConstraints([self. myConstraint])
} else {
NSLayoutConstraint.deactivateConstraints([self. myConstraint])
}
}
}
但是当我再次调用我的操作时,myConstrain
出现错误 unexpectedly found nil while unwrapping an Optional value
。
此外,它没有动画。我做错了什么?
我遵循 WWDC 2015 的教程:
停用约束与为视图调用 removeConstraint:
相同。参考documentation。因此,当您删除具有 weak
引用的对象时,将导致对象释放。现在这个对象是 nil
并且激活它根本不会有任何效果。要解决此问题,您需要对约束对象有强引用。
@IBOutlet strong var myConstraint: NSLayoutConstraint!