曾经为了实现cell的高度自适应,不知道吃了多少苦。那个时候,是在我的数据模型model中添加一个height属性,实现它的get方法,在get方法中计算需要多行显示文字的高度,然后再加上其他乱七八糟的高度并返回,然后在tableview的
- (CGFloat)tableView:(UITableView )tableView heightForRowAtIndexPath:(NSIndexPath )indexPath中获取到每行对应的model,取出其中的model.height属性的值返回,还要在cell中确定cell中label的高度。。。总之就是很麻烦,而且还不一定总能算的很正确,甚是受此困扰。
后来有一天,我终于发现了一个不得了的秘密,只要你懂一定的Autolayout知识的话,原来实现这种的cell高度自适应,其实是灰常灰常简单的:
首先,第一步,现在自定义的cell中将高度随着内容动态改变的label的布局使用autolayout布局完成,这里有个注意点就是label和cell边界的距离要确定好,不能固定死label的高度,然后设置label的numberOfLines=0,行数设置为0即意味着label可以有任意行。
其次,实现以下两个tableview的delegate中的方法:
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(