作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想实现一个功能,当我点击按钮时,图像会在两个按钮之间移动
我在image和button2(centerX,which text with 222)之间设置了一个constraint 同时我也设置了button1(centerX,which text with 11)的constraint 并且设置了priority为950 然后我把它们拖到 View Controller
这是我 Storyboard中的约束
这是我控制约束的代码
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 ,应用程序是现金 self.kidRightCenterConstrait.active = !isLeft
控制台日志是 fatal error :在展开可选值时意外发现 nil
最佳答案
看来限制已解除。您可能会尝试强烈保留您的约束:
@IBOutlet var kidLeftCenterConstrait: NSLayoutConstraint!
@IBOutlet var kidRightCenterConstrait: NSLayoutConstraint!
无论如何要注意可能的循环保留。检查您的 ViewController 是否在时机成熟时消失。
我通常会做这种动画,在代码中管理所有涉及的约束。
关于iOS - AutoLayout 约束设置激活在第二次崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29898681/
我是一名优秀的程序员,十分优秀!