让UITableViewCell使用autolayout调整自身大小

时间:2013-08-27 23:47:09

标签: ios objective-c uitableview autolayout

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

enter image description here enter image description here

如果文本未包含在标签中,则单元格看起来很好。一旦它出现问题,我希望让单元格调整大小以适应内容,底部标签和底部之间的间距与顶部和顶部标签之间的间距相同。

2 个答案:

答案 0 :(得分:2)

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

如果您考虑表如何工作,使用单元重用,那么您无法在不加载每个单元格的情况下将表格从其单元格中调整大小并将其添加到滚动视图中,并对整个事物执行布局传递。这可能会导致相当糟糕的表现。

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

答案 1 :(得分:0)

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

 Something like:
     cell.frame.size.height

如果高度足够大,你知道标签已经包裹成两行,那么就增加你要加载的单元格的高度。