【发布时间】:2015-04-12 22:40:11
【问题描述】:
我正在尝试调试+理解自动布局约束,我注意到在使用 xcode 调试视图时(使用酷层的东西)我注意到视图中的一个元素上的约束看起来像这样
并且视图确实忽略了这些约束。
所有约束都具有相同的优先级 (1000),因为我想要它们。所有的约束都是通过界面生成器而不是通过代码进行的,并且在 IB 中没有警告或冲突。
但在运行时我确实看到了这个
Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x79684f10 V:[UIImageView:0x79686800(>=160)]>",
"<NSLayoutConstraint:0x7968a310 V:[UIImageView:0x79686800]-(130.5)-| (Names: '|':UIView:0x79686790 )>",
"<NSLayoutConstraint:0x7968a340 V:|-(0)-[UIImageView:0x79686800] (Names: '|':UIView:0x79686790 )>",
"<NSLayoutConstraint:0x796997b0 'UIView-Encapsulated-Layout-Height' V:[CoverCell:0x79686570(192)]>",
"<NSAutoresizingMaskLayoutConstraint:0x7969cd30 h=-&- v=-&- UIView:0x79686790.height == CoverCell:0x79686570.height>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x79684f10 V:[UIImageView:0x79686800(>=160)]>
所以从这里我了解到一些规则冲突,但我不知道如何阅读这个
>=160 是 UIImageView 上的一条规则,因此它的高度至少为 160,而 130.5 是图像视图的底部填充(因此,当使用 systemLayoutSizeFittingSize:UILayoutFittingCompressedSize 时,高度不会为 0。所以对于整个单元格为160+130.5)
其余的错误我不明白。
约束有什么问题,为什么会在运行时而不是在 IB 中发生约束冲突?
【问题讨论】:
标签: ios objective-c xcode autolayout constraints