UITableView性能优化---自动计算cell高度(FDTemplateLayoutCell)
来源:互联网 发布:mac air11寸 编辑:程序博客网 时间:2024/05/19 21:42
1、使用前提
和每个 UITableViewCell ReuseID 一一对应的 template layout cell
这个 cell 只为了参加高度计算,不会真的显示到屏幕上;它通过 UITableView 的 -dequeueCellForReuseIdentifier: 方法 lazy 创建并保存,所以要求这个 ReuseID 必须已经被注册到了 UITableView 中,也就是说,要么是 Storyboard 中的原型 cell,要么就是使用了 UITableView 的 -registerClass:forCellReuseIdentifier: 或 -registerNib:forCellReuseIdentifier:其中之一的注册方法。
例:
NSString *const MJMCommentViewCell = @"MJMCommentViewCell";
自动布局
2、使用方法
修改TableViewDelegate方法
例:
重写模板中的sizeThatFits方法(例:JMCommentViewCell)
例:
注:(1)totalHeight依次累加控件高度和控件间的间隔,不需要累加所有控件,只需要累加计算cell高度需要的控件即可;(2)添加图片计算高度时会有问题,返回的是图片的真实高度,而不是控件高度(设置尺寸也不起作用),如果图片控件高度已知或一定,可以累加该高度。
3、根据 index path 的高度缓存机制
计算出的高度会自动进行缓存,所以滑动时每个 cell 真正的高度计算只会发生一次,后面的高度询问都会命中缓存,减少了非常可观的多余计算。
- (CGFloat)fd_heightForCellWithIdentifier:(NSString *)identifier cacheByIndexPath:(NSIndexPath *)indexPath configuration:(void (^)(id cell))configuration;
- (CGFloat)fd_heightForCellWithIdentifier:(NSString *)identifier cacheByKey:(id)key configuration:(void (^)(id cell))configuration;
自动的缓存失效机制
当调用如-reloadData,-deleteRowsAtIndexPaths:withRowAnimation:等任何一个触发 UITableView 刷新机制的方法时,已有的高度缓存将以最小的代价执行失效。如删除一个 indexPath 为 [0:5] 的 cell 时,[0:0] ~ [0:4] 的高度缓存不受影响,而 [0:5] 后面所有的缓存值都向前移动一个位置。自动缓存失效机制对 UITableView 的 9 个公有API都进行了分别的处理,以保证没有一次多余的高度计算。
- UITableView性能优化---自动计算cell高度(FDTemplateLayoutCell)
- cell自动计算高度(masonry与UITableView-FDTemplateLayoutCell)
- 使用UITableView+FDTemplateLayoutCell计算cell的高度
- UITableView自动计算CELL高度
- iOS多种cell使用FDTemplateLayoutCell自动计算高度
- UITableView性能优化 以及动态计算cell高度 新方法
- TableView性能优化——动态cell适应工具(UITableView+FDTemplateLayoutCell)
- TableView性能优化——动态cell适应工具(UITableView+FDTemplateLayoutCell)
- UITableView自动计算cell的高度
- UITableView自动计算cell高度并缓存
- UITableView自动计算cell高度并缓存
- 缓存cell高度开源代码阅读:UITableView-FDTemplateLayoutCell
- iOS UITableView-FDTemplateLayoutCell框架 cell重叠 高度返回0.5问题解决
- Masonry 和 UITableView-FDTemplateLayoutCell 实现自适应高度的Cell
- UITableView-FDTemplateLayoutCell 与Masonry 一起解决不定高度的cell
- ios开源框架——UITableView+FDTemplateLayoutCell优化UITableViewCell高度计算
- 四种方法实现UITableView的cell高度自动计算
- UITableView-FDTemplateLayoutCell缓存cell高度时,cell重叠高度为0的问题解决
- 构造器内部的多态方法的行为详解(附源码)
- cmake 一
- json
- 关于listview中添加倒计时功能卡顿问题
- 分布式系统里session同步的那些事儿
- UITableView性能优化---自动计算cell高度(FDTemplateLayoutCell)
- 笔记之Java的三大特性
- 将博客搬至CSDN
- xml字符串转json
- Android 应用的数据库
- 第一章、Java语言基础
- Nginx + CGI/FastCGI + C/Cpp
- jzoj 1576. 【普及模拟】自动统计机
- PHP和apache基本设置