UITableView自动计算cell高度
这篇文章来说一下UITableView的cell自适应高度,其实很简单,,但是最重要的是一定要给cell自上而下加好约束,如果写出来的的cell没有自适应高度,那基本上都是cell的约束没有写好的原因,,这个很重要,自上而下,,上下左右的约束都要写好,才能达到自适应高度的效果。
1. 在写高度的时候使用:
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
return 80;
}
或者使用另一种方法:
self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = 80;
这个的意思就是告诉tableView,你需要自己适应高度,我不给你算啦。但是我们需要告诉它一个大概高度,例如上面的80,理论上这个是可以随便写的,并不影响显示结果,但是越接近真实高度越好。
UITableView在进行渲染的时候会先走estimatedHeightForRowAtIndexPath这个方法,会先给它一个预估的高度值,然后在根据Cell的具体内容去计算真实高度值;
2. 在Cell里面写UI的时候,self或者self.contentView必须要统一,,不能有的加在self上有的加在self.contentView上,,,否则影响了Cell的 自适应高度 必须要各个控件上下全都约束好,除了内容不固定的地方,其他地方的高度一定要给一个准确的值,,这样才能自适应!!!
3. 一般Cell需要自适应高度,是因为有一个需要用UILabel显示的地方的内容和高度不固定,所以才需要自适应高度,针对这个ContentLabel的地方,[self.contentLabel setNumberOfLines:0]; numberoflines这个属性一定要设置成0,, 约束上不用设置高度,但是上下约束一定要约束好。
4. 在写Cell上的控件的约束的时候,一定要注意,自上而下,第一个控件距离顶部的距离,,最后一个控件距离底部的距离都要写上,尤其不能忘了最后一个控件距离底部的约束一定要写上。