ios – 如何激活先前已停用的约束?

前端之家收集整理的这篇文章主要介绍了ios – 如何激活先前已停用的约束?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我保留了对我的NSLayoutConstraint的引用
var flag = true
@IBOutlet weak var myConstraint: NSLayoutConstraint!

然后对于某些@IBAction我根据我的标志变量激活/停用:

@IBAction func tapped(sender: UIButton) {
    flag = !flag
    UIView.animateWithDuration(1.0) {
        if self.flag {
            NSLayoutConstraint.activateConstraints([self. myConstraint])
        } else {
            NSLayoutConstraint.deactivateConstraints([self. myConstraint])
        }
    }
}

但是当我再一次调用我的动作时,在解开myConstrain的Optional值时,我意外地发现了一个错误nil.

更多的东西没有动画.我究竟做错了什么?

我按照WWDC 2015的教程:

解决方法

取消激活约束与调用removeConstraint:对于视图相同.请参阅 documentation.因此,当您删除具有弱引用的对象时,将导致对象取消分配.现在这个对象是nil并且激活它根本不会有任何影响.要解决此问题,您需要对约束对象有一个强引用.
@IBOutlet strong var myConstraint: NSLayoutConstraint!

猜你在找的iOS相关文章