微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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!

原文地址:https://www.jb51.cc/iOS/330829.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐