美文网首页
iOS小笔记之 cell缓存高度

iOS小笔记之 cell缓存高度

作者: 小码honey | 来源:发表于2020-07-28 16:40 被阅读0次

    之前面试,常常被问到关于UITableView滑动,高度计算的问题,现在有时间正好来做一个小小的总结;

    目前为止,项目中用到做多的就是缓存高度;

    由于tableView可以展示的类型很多,图文混排最为复杂也最为常用,如果每次调用heightForRow再计算高度,会给页面造成卡顿,不流畅的现象。

    下面以项目中写的一个查看物流信息的页面为例,代码展示如下:

    @interface DJTrackDetailModel : NSObject

    @property (nonatomic,strong) NSString  *context;//物流运输明细

    @property (nonatomic,strong) NSString  *ftime;  //物流运输明细时间

    @property (nonatomic,assign) CGFloat contentHeight; // 文本高度    自定义的

    此为根据接口数据解析model,文本高度为根据context计算 做的缓存,在ViewController中,代码实现

    orderModel = [DJOrderModel mj_objectWithKeyValues:responseModel.data];
            //计算物流信息高度
            CGSize size = [orderModel.expressData.context getTextSizeWithSystemFont:[UIFont systemFontOfSize:15.] maxSize:CGSizeMake(__gScreenWidth-49-25, MAXFLOAT)];
            if (size.height < 22) {
                size.height = 22;
            }在这里将请求的数据,计算出高度,存进model的contentHeight里。
      orderModel.expressData.contentHeight = size.height;

    最终在heightForRow就可以直接获取model然后返回高度即可。

    总结:

    1.对于数据量较大的,可以在请求接口数据成功之后,解析数据时直接计算文本、图片的高度,缓存到model里,这样可以防止多次计算;

    2.在用到高度显示的时候,直接取用,方便快捷。比专门放到一个数组里会省很多代码量,而且逻辑更容易处理。

    3.图片也是类似的处理方式。可以根据图片的数量,设定图片的宽高,缓存到model里。

    ----------------------不断学习,不断进步------------------------

    相关文章

      网友评论

          本文标题:iOS小笔记之 cell缓存高度

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