Xcode中的约束条件是灰色的

时间:2015-02-12 09:07:48

标签: ios objective-c xcode autolayout constraints

我正在尝试调试+了解自动布局约束,我注意到在使用xcode调试视图时(使用酷层事物)我注意到在视图中的一个元素上,约束看起来像这样

enter image description here

并且视图确实忽略了这些约束。

所有约束具有相同的优先级(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是imageview的底部填充(因此当使用systemLayoutSizeFittingSize:UILayoutFittingCompressedSize时,高度不会为0所以整个细胞的最小高度是160 + 130.5)

我不明白的其他错误。

约束有什么问题?为什么约束冲突在运行时而不是在IB中发生?

2 个答案:

答案 0 :(得分:6)

XCode 6现在支持不同的布局。 Compact Width |中存在这种灰色约束例如,任何高度布局,但您当前正在编辑任意宽度|任何高度

更详细: Storyboard View Elements Greyed Out

答案 1 :(得分:1)

这取决于。如果你不使用大小类,灰色的是删除的。你需要第二次删除它们。无论听起来多么愚蠢。

如果使用大小类,则表示当前大小类与灰色约束不同。 (但第一种情况也是可能的......)

在你的情况下,这似乎是第一种情况。您需要再次删除灰色约束。