指定视图大小何时取决于多个子视图的约束
Posted
技术标签:
【中文标题】指定视图大小何时取决于多个子视图的约束【英文标题】:Constraints to specify when view size is dependent on multiple subviews 【发布时间】:2014-03-04 12:56:08 【问题描述】:我在UITableView
中使用自定义单元格。单元格中有 4 个视图。 3 个UILabel
s 和1 个UIImageView
(灰色一个),如下图所示。标签的文本是动态的,因此宽度和高度是动态的。
UIImageView
的宽度取决于 2 个标签。所以问题是指定标签和UIImageView
之间的约束,这将决定UIImageView
的宽度。
看看下面如果第一个标签的文本很长会发生什么。
当宽度取决于多个标签的宽度时如何指定约束?
更新:我尝试将标签的行数设置为 0,将固有大小设置为占位符。它也不起作用。下面是它的外观。我尝试将固有宽度和高度设置为无,但是当我对两个标签都这样做时会出错,如果只为一个标签设置则不会出错。
更新:我更改了属性,下面显示了它们现在是什么以及单元格的显示方式。
单元格:
第一行标签的约束(粉红色):
第二行标签的约束(青色):
【问题讨论】:
您是在 IB 中还是在代码中设置约束? 如果在 IB 中,您需要将标签的行数设置为 0,并在 Size Inspector 中将 Intrinsic Size 设置为占位符。这样,标签的大小和行数将在运行时根据内容计算出来。 显然关注这个帖子***.com/questions/18746929/…。但我已经在那里见过你了。 @MartinKoles 我将尝试更改行数和内在大小。你能解释一下为什么要将固有大小设置为占位符吗? 看到这个***.com/questions/19677142/… 【参考方案1】:我在尝试了很多东西后解决了这个问题。我唯一要做的就是将水平和垂直内容压缩阻力优先级设置为必需。即1000。 我对所有标签都这样做了,因为我不希望任何标签修剪它们的内容。
另外一件非常重要的事情是获得正确的单元格高度。如果在计算自定义单元格的高度时甚至出现 1pt 的错误,它将不会按预期显示。
提示:
-
如果任何视图的高度大于预期,则可能计算出的单元格高度大于实际需要的高度。
如果任何视图垂直缩小或不显示全部内容,则可能计算出的单元格高度小于实际需要的高度。
Yoy 可以通过向您为单元格计算的高度(变量)添加/删除常数值来测试高度是否错误。
【讨论】:
以上是关于指定视图大小何时取决于多个子视图的约束的主要内容,如果未能解决你的问题,请参考以下文章
当父级的大小减小时,哪些自动布局约束允许子视图压缩到 0 大小?
当父容器视图约束以编程方式更改时,UINavigationController 子视图不调整大小