使用固定大小的子视图和自动布局调整 UIView 的大小不起作用

Posted

技术标签:

【中文标题】使用固定大小的子视图和自动布局调整 UIView 的大小不起作用【英文标题】:Resizing UIView with fixed sized subviews and autolayout doesn't work 【发布时间】:2015-07-01 11:23:21 【问题描述】:

我正在尝试使用动态单元格高度制作表格视图。除一种情况外,一切正常且可预测。在这种情况下,表格单元格有几个固定高度的子视图,它们之间的垂直间距固定,表格单元格顶部和第一个子视图顶部之间的固定空间,表格单元格底部和最后一个子视图底部之间的固定空间。而且我希望表格视图将具有其所有子视图和空间的高度。但它不起作用,这是运行时固定的水平约束制动器之一。我在 Interface Builder 中做了同样的例子并发现了问题,但我不知道如何正确地达到预期的行为。

【问题讨论】:

【参考方案1】:

您获得的冲突约束仅在 Interface Builder 中 - 它们不应出现在运行时。

原因是 IB 无法根据约束调整 UITableViewCell 的高度,即动态单元格高度仅在运行时计算,而不是在 IB 中计算。

要解决此问题,您可以在 IB 中将单元格的高度设置为预期的常量(单元格 -> SizeInspector -> 行高)

【讨论】:

截图有简单的视图,不是UITableViewCell。在这种情况下,IB 期望手动设置 Container 高度,正如您所提到的。在运行时,当所有子视图都是固定高度时,我会遇到同样的问题。容器视图无法根据子视图计算其高度并打破子视图高度约束之一。

以上是关于使用固定大小的子视图和自动布局调整 UIView 的大小不起作用的主要内容,如果未能解决你的问题,请参考以下文章

创建一个基于 UIView 的子视图自动调整大小的视图

使用自动布局调整同级视图的大小时,使用子视图重新定位 UIView 不起作用

根据子视图大小调整 XIB 中的 UIView 大小

根据最大的子视图使用自动布局调整超级视图的大小

使用自动布局调整 UIView 大小并更新内容

UIView 使用约束自动布局居中和调整大小