效果
我们先看下实现的效果
comment.gif
应有场景
相信大家都用过UITableView,或多或少都会遇到cell需要变高的场景。UITableView 继承自UIScrollView ,所以需要提前设置cell的height。一般我们会通过下面两种方法
方法 1. - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath: (NSIndexPath *)indexPath{}
方法 2. self.tableView.rowHeight = 0.f;
iOS 7前 设置变高需要在 方法 1 中计算出每个cell的高度,非常麻烦
iOS 7后 设置变高只需要设置如下两个关键点即可轻松实现
关键代码
1.设置tableView的estimatedRowHeight 属性,估算cell的高度,不需要再tableView的代理中设置高度了,代码如下:
self.tableView.delegate = self;
self.tableView.dataSource = self;
self.tableView.estimatedRowHeight = 70.f;
self.tableView.allowsSelection = NO;
2.在自定义的cell中,利用AutoLayout布局,将需要变高的Label height设置为大于等于如图:
设置大于等于属性
完整代码可以在这里下载,有问题可以在评论区交流哈~
网友评论
[self.comments exchangeObjectAtIndex:idx1 withObjectAtIndex:idx2];
[self.tableView reloadData];
不存在缓存的问题,高度也会跟着改变