用于指定视图大小何时依赖于多个子视图的约束

时间:2014-03-04 12:56:08

标签: ios iphone objective-c uitableview autolayout

我在UITableView中使用自定义单元格。单元格中有4个视图。 3 UILabel s和1 UIImageView(灰色),如下所示。标签文本是动态的,因此宽度和高度是动态的。

enter image description here

此处UIImageView的宽度取决于2个标签。因此,问题是指定标签和UIImageView之间的约束,它将决定UIImageView的宽度。

如果第一个标签的文字很长,会看到会发生什么。

enter image description here

当宽度取决于多个标签的宽度时,如何指定约束?

更新:我尝试将标签的行数设置为0,将内在大小设置为占位符。它也不起作用。下面是它的外观。我尝试将内部宽度和高度设置为无,但是当我为两个标签执行此操作时出现错误,如果仅为一个标签设置,则不会出错。

enter image description here

enter image description here

enter image description here

更新:我更改了属性,下面显示了它们现在的状态以及单元格的显示方式。

单元格:

enter image description here

第一行标签的约束(粉红色):

enter image description here

第二行标签的约束(青色):

enter image description here

1 个答案:

答案 0 :(得分:2)

我在尝试了很多事情后解决了这个问题。我唯一要做的就是将水平和垂直内容压缩阻力优先级设置为必需 .i.e。 1000。 我为所有标签做了这个,因为我不希望任何标签修剪它们的内容。

另一件重要的事情是获得正确的细胞高度。如果计算自定义单元格高度时甚至有1pt的错误,则不会按预期显示。

提示:

  1. 如果任何视图的高度大于预期,则可能计算出的单元格高度大于实际需要的高度。
  2. 如果任何视图垂直缩小或不显示整个内容,则可能计算出的单元格高度小于实际需要的高度。
  3. Yoy可以通过添加/删除您为单元格计算的高度(变量)的常量值来测试高度是否错误。