iOS 7后 Cell变高原来如此简单

作者: DeadRabbit | 来源:发表于2017-05-19 14:03 被阅读152次

效果

我们先看下实现的效果


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设置为大于等于如图:


设置大于等于属性

完整代码可以在这里下载,有问题可以在评论区交流哈~

相关文章

网友评论

  • 3d307d75f556:self-size cell我记得好像ios8以上才支持?
  • 波多多:这样设置高度会有缓存吗?如果这个时候某一个cell 的内容有变,高度需要更新,缓存会更新吗?
    波多多:@DeadRabbit 嗯,是的:+1:
    DeadRabbit: 应该不存在高度缓存的问题~我尝试更换cell内容如下:
    [self.comments exchangeObjectAtIndex:idx1 withObjectAtIndex:idx2];
    [self.tableView reloadData];
    不存在缓存的问题,高度也会跟着改变:blush:
  • 东东隆东抢:能够实现自动根据label文字多少改变cell高度?
    DeadRabbit:是的呐~ 代码在文章最后有放,你可以看看~
  • f3744130a074:如何设置大于等于属性
    f3744130a074:@DeadRabbit 知道了,设置ralation属性
    DeadRabbit: 先把 height 设置为 "=",然后点edit 编辑为">="
  • DeadRabbit:@国王or乞丐 :sweat_smile:好吧,回头我再看看是什么地方没表达清楚~
  • 国王or乞丐:说实话没看懂,表达能力需要提升:joy:

本文标题:iOS 7后 Cell变高原来如此简单

本文链接:https://www.haomeiwen.com/subject/rxryxxtx.html