关于Cocoa Autolayout关于内容拥抱和抗压缩性之间差异的Apple文档,我找不到明确的答案.
有人可以解释他们的用法和差异吗?
我有一个简单的(我认为)问题:我有一个UIImageView,我在故事板中设置了多个约束.
有时,我需要禁用约束,并frame手动设置它,但稍后,我将要重新启用这些约束并让视图返回到约束所决定的位置.
我以为我可以这样做:
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var constraint: NSLayoutConstraint!
func example() {
//to set its location and size manually
imageView.removeConstraint(constraint)
imageView.frame = CGRectMake(...)
//to cause it to return to its original position
imageView.addConstraint(constraint)
}
Run Code Online (Sandbox Code Playgroud)
但是,有了这个,我得到了错误2015-08-26 01:14:55.417 Constraints[18472:923024] The view hierarchy is not prepared for the constraint: <NSLayoutConstraint:0x7fbb72815f90 V:[_UILayoutGuide:0x7fbb72814c20]-(100)-[UIImageView:0x7fbb72814540]>.有谁知道为什么会出现这个错误?
view通过调用添加约束来self.view.addConstraint(...)消除错误,但仍然没有将图像视图带回到它应该的位置.
我注意到我甚至不必删除或停用约束,以便能够设置imageView没有问题的框架,只要我不打电话setTranslatesAutoresizingMaskIntoConstraints(true).
我已经看过这个问题,但答案似乎不必要地复杂,可能已经过时,甚至不适用.
我也看到了这个问题,但这并没有涵盖可以重新启用的约束 - 只能禁用它们.
试图设置active属性:
self.top.active = …Run Code Online (Sandbox Code Playgroud)