3

我在 a 中有 3 个标签UITableViewCell并设置了标签,因此它们会自动换行。如果他们自动换行,则文本将进入下一个单元格。如何让 AutoLayout 根据内容展开单元格,而无需在heightForRowAtIndex方法中编写代码?是不是有一个约束我可以用来根据 contentView 自动调整单元格?

在此处输入图像描述 在此处输入图像描述

如果文本没有包含在标签中,则单元格看起来很好。一旦它包裹,那就是问题发生的时候,我想让单元格调整大小以适应内容,并且底部标签和底部之间的间距与顶部和顶部标签之间的间距相同。

4

2 回答 2

2

不幸的是,不,你不能这样做。表格视图首先计算自己的总高度,并且在加载时对每个单元格的大小有一个固定的概念,它不会从外向内确定它的高度,也不会让布局约束改变单元格的高度。

如果您考虑表格是如何工作的,以及单元格重用,那么如果不加载每个单元格并将其添加到滚动视图,并在整个事物上执行布局传递,您就无法真正从其单元格中调整表格大小。这可能会导致性能很差。

您可以尝试填充“空闲”单元格(即您刚刚实例化的单元格,而不是添加到表中)并在计算 heightForRow 时为数据源中的每一行布置它。

于 2013-08-28T06:53:05.300 回答
0

在加载单个单元格时,在填充标签之后,但在加载单元格实例之前,请检查标签高度。

 Something like:
     cell.frame.size.height

如果高度足够大,以至于您知道标签已绕到两行,则增加您将要加载的单元格的高度。

于 2013-08-28T04:53:57.187 回答