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


    设置大于等于属性

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

    相关文章

      网友评论

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

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

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