我有一个带有UITableView
的视图控制器。我将其设置为具有动态原型单元格,设置第一个单元格的样式为“自定义”,并向该单元格添加一些子视图。
每当我这样做时,IB都会抱怨,显示红色警告,并拒绝对单元格进行布局,即使它在正在运行的应用程序中可以正常工作。有什么问题吗?
下面的屏幕截图显示了详细信息。
首先,尽管UITextField
浮动在单元格上方一半,但其超级视图受到中心y约束,因此应将其放置在单元格的中间。
单击“更新框架”按钮没有任何作用。
IB还对左侧的图像视图做出虚假声明。它说它需要一个“ Y位置或高度”。但是,它同时具有:50 pt的高度,以及对单元顶部和底部的约束。
答案 0 :(得分:1)
您的拇指图像约束可能在原型单元格的高度上彼此冲突。顶部空间+底部空间+高度大于原型单元的高度。 Interface Builder不知道如何布置该布局或不打破哪个约束。您有几种选择:
修改原型单元的高度以匹配期望的高度,以便约束不会发生冲突。
将3个约束之一更改为小于所需的优先级。这将使Interface Builder可以打破该约束以满足其他两个约束。
更改约束以适合原型单元格高度。与选项1类似,但更改约束以适合高度而不是更改高度以适合约束。
当涉及到单元格高度时,Interface Builder并不是很宽容,尤其是当它们包含一个内容视图时,由于分隔符,该视图的高度是分数的。我猜您的问题出在这三个约束的总和等于70,但您的内容视图高度约为70.5。我发现通常最好在容器约束中使用顶部约束,高度约束和垂直居中位置,而不是顶部,高度和底部。