cell自定义高度

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

{
    
    //取出模型
    
    XMGTopic *topic = self.topics[indexPath.row];
    
    CGFloat textY = 55;
    
    //根据文本宽度算出模型中text的高度
    
    CGFloat textH = [topic.text boundingRectWithSize:CGSizeMake(self.view.frame.size.width-40, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:14]} context:nil].size.height;
    
    return textH+textY+44+10+10;
    
}

//开发中,不建议在- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath方法中计算每行cell的高度(每次滑动后都要重新计算当前展示cell的高度),建议在模型.h中去增加一个属性:

/** cell的高度*/
@property (nonatomic, assign) CGFloat cellHeight;

.m实现cellHeight的get方法

- (CGFloat)cellHeight

{
    
    if (!_cellHeight) {
        
        CGFloat textY = 55;
        
        CGFloat textH = [self.text boundingRectWithSize:CGSizeMake([UIScreen mainScreen].bounds.size.width - 40, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:14]} context:nil].size.height;
        
        _cellHeight = textH+textY+44+10+10;
        
    }
    
    return _cellHeight;
    
}

//然后在tableview代理方法中实现:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

{
    
    //取出模型
    
    XMGTopic *topic = self.topics[indexPath.row];
    
    return topic.cellHeight;
    
}

这样做的好处是把cell的高度存在模型中,不用每次都重新计算

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 我们在上一篇《通过代码自定义不等高cell》中学习了tableView的相关知识,本文将在上文的基础上,利用sto...
    啊世ka阅读 1,543评论 2 7
  • 如果是比较复杂的cell,里边有好多控件,而且有的控件不一定在每个 cell都显示的话,用李明杰给出的思路...
    JingYa_Lu阅读 498评论 0 1
  • 概述在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似...
    liudhkk阅读 9,093评论 3 38
  • 这是我第二次看这本书了!超喜欢活泼可爱的小豆豆,还有很有耐心的妈妈和非常有爱的校长。 “我打算做一个售票员...
    Coco随手笔阅读 387评论 0 0
  • 昨天分享了我们梦想的开始,由于最近产品要上线了,挺忙的,每天只能写一点点,不过我尽量每天都来写一点,一是记录下这段...
    小倾心阅读 795评论 0 1