iOS-自动布局约束集处于活动状态将在第二次崩溃
我想实现一个功能,当我点击按钮时,图像将在两个按钮之间移动 我在图像和按钮2(centerX,其中文本为222)之间设置了一个约束,同时我也用按钮1(centerX,其中文本为11)设置了一个约束,并用950设置了优先级,然后我将它们拖动到iOS-自动布局约束集处于活动状态将在第二次崩溃,ios,swift,autolayout,Ios,Swift,Autolayout,我想实现一个功能,当我点击按钮时,图像将在两个按钮之间移动 我在图像和按钮2(centerX,其中文本为222)之间设置了一个约束,同时我也用按钮1(centerX,其中文本为11)设置了一个约束,并用950设置了优先级,然后我将它们拖动到视图控制器 这是我故事板中的限制 这是我控制约束的代码 if NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1 { self.kidLeftCenter
视图控制器
这是我故事板中的限制
这是我控制约束的代码
if NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1 {
self.kidLeftCenterConstrait.active = isLeft
self.kidRightCenterConstrait.active = !isLeft
UIView.animateWithDuration(kAnimationDuration, animations: { () -> Void in
self.view.layoutIfNeeded()
})
} else {
let constraintToRemove = isLeft ? self.kidRightCenterConstrait : self.kidLeftCenterConstrait
let constriaintToUse = isLeft ? self.kidLeftCenterConstrait : self.kidRightCenterConstrait
self.douBi.superview!.removeConstraint(constraintToRemove)
self.douBi.superview!.removeConstraint(constriaintToUse)
self.douBi.superview!.addConstraint(constriaintToUse)
UIView.animateWithDuration(kAnimationDuration, animations: { () -> Void in
self.view.layoutIfNeeded()
})
}
在iphone上运行后
我单击按钮1,图像移动到11,然后单击按钮2,应用程序是cash inself.kidRightCenterConstrait.active=!isLeft
控制台日志是
致命错误:在展开可选值时意外发现nil
约束似乎已释放。您可以尝试强烈保留您的约束:
@IBOutlet var kidLeftCenterConstrait: NSLayoutConstraint!
@IBOutlet var kidRightCenterConstrait: NSLayoutConstraint!
无论如何,请注意可能的保留周期。检查ViewController是否在时机成熟时消失
我通常在代码中管理所涉及的约束来制作这种动画。您为什么不使用
removeConstraint
和addConstraint
?我尝试过,在kidRightCenterConstrait
中崩溃了。您认为文档中会提到这一点吗。