Ios 让UITableViewCell使用自动布局调整自身大小

Ios 让UITableViewCell使用自动布局调整自身大小,ios,objective-c,uitableview,autolayout,Ios,Objective C,Uitableview,Autolayout,我在一个UITableViewCell中有3个标签,并将标签设置为可以换行。如果他们换行,文本将进入下一个单元格。如何让AutoLayout根据内容展开单元格,而不必在heightforrowatinex方法中编写代码?是否有一个约束可以用于根据contentView自动调整单元格 如果文本未在标签中换行,则单元格看起来很好。一旦出现问题,我希望调整单元格大小以适应内容,并使底部标签和底部之间的间距与顶部标签和顶部标签之间的间距相同。加载单个单元格时,在填充标签之后,但在加载单元格实例之前,

我在一个
UITableViewCell
中有3个标签,并将标签设置为可以换行。如果他们换行,文本将进入下一个单元格。如何让AutoLayout根据内容展开单元格,而不必在
heightforrowatinex
方法中编写代码?是否有一个约束可以用于根据contentView自动调整单元格


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

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

 Something like:
     cell.frame.size.height

如果高度足够大,您知道标签已包装为两行,则增加即将加载的单元格的高度。

不幸的是,您不能这样做。表视图首先计算其自身的总高度,并在加载时固定每个单元的大小,它不会从外向内确定其高度,也不会让布局约束更改单元的高度

如果您考虑一下表是如何工作的,在单元格重用的情况下,如果不加载每个单元格并将其添加到scrollview中,并且在整个过程中执行布局传递,就无法从单元格中确定表的大小。这可能会导致相当差的性能


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

我自己使用一个空闲单元格。但最好是使用几个单元格,或者如果您自己管理表视图中的单元格数量,当您说“空闲单元格”时,您的意思是用代码创建它?所以我想我需要做
label1.size.height+label2.size.height+label3.size.height+topPadding+bottomPadding
,这就是单元格的高度?或者我需要为每个单元格计算constraintToSize?我的意思是,在代码中创建一个单元格,填充它,然后调用[LayoutFneed]来确定大小。如果约束设置正确,则应计算显示内容所需的单元格的确切大小。