前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >cell高度的缓存2——利用模型属性缓存

cell高度的缓存2——利用模型属性缓存

作者头像
用户1451823
发布2018-09-13 15:47:03
4340
发布2018-09-13 15:47:03
举报
文章被收录于专栏:DannyHoo的专栏DannyHoo的专栏

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1337809

之前的一篇文章(http://blog.csdn.net/u010105969/article/details/53203860)介绍了利用字典缓存cell高度的方法,可还是略显复杂,因为要多定义一个字典,还得注意字典数据的清除。我们如果利用已有的模型进行cell高度的缓存会更简单些。

我们要利用的模型是与cell一一对应的模型。在该模型中增添一个cellHeight的属性用于记录cell的高度。看代码:

// 重写cell的get方法

  • (CGFloat)cellHeight{

if (_cellHeight == 0.f) {   // 如果单元格高度为零

CGFloat cellHeight = 0;

        cellHeight += 30;

NSString * text = self.text;

NSMutableDictionary * dic = NSMutableDictionary dictionary;

        dicNSFontAttributeName = UIFont systemFontOfSize:17;

CGRect textRect = text boundingRectWithSize:CGSizeMake(WIDTH-20, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil;

        cellHeight += textRect.size.height;

        cellHeight += 30;

_cellHeight = cellHeight;

NSLog(@"cell 高度%f", _cellHeight);

    }

return _cellHeight;

}

以上的代码写在模型的.m文件中。此时heightForRowAtIndexPath方法中的代码为:

  • (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

TopicModel * model = self.dataSourceindexPath.row;

return model.cellHeight;

}

看是不是Controller中的代码精简了许多。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年11月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档