iOS开发——UITableView优化之缓存cell高度
2017-07-05 17:22
591 查看
为什么要缓存高度?
因为当tableView滚动时会不停的回调- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;这个代理方法,当cell的高度需自适应内容时,就意味着每次回调这个方法时都要计算高度,而计算是要花时间了,在用户体验上的体现就是卡顿。为了避免重复且无意义的计算cell高度,缓存高度就显得尤为重要了。
怎样缓存?
缓存高度需要一个可变数组,每当回调- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;这个方法时,我们先去这个数组里去取,如果有,就直接拿出来,如果没有,就计算高度,并且放进数组。
代码讲解
这是我们用来装缓存高度的可变数组/** 缓存cell高度的数组 */ @property (nonatomic,strong) NSMutableArray *heightArray;注意懒加载
- (NSMutableArray *)heightArray{ if (_heightArray == nil) { _heightArray = [NSMutableArray array]; } return _heightArray; }缓存高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ CGFloat height; if (self.heightArray.count > indexPath.row) { // 如果有缓存的高度,取出缓存高度 height = [self.heightArray[indexPath.row] floatValue];; }else{ // 无缓存高度,计算高度,并加入数组 // 高度根据评论内容多少自适应 CQGoodsCommentModel *model = self.dataArray[indexPath.row]; // 列寬 CGFloat contentWidth = screenWidth-20; // 用何種字體進行顯示 UIFont *font = [UIFont systemFontOfSize:13]; // 计算size CGSize size = [model.comment_content sizeWithFont:font constrainedToSize:CGSizeMake(contentWidth, 1000) lineBreakMode:UILineBreakModeWordWrap]; // 這裏返回需要的高度 height = size.height+60; // 加入数组 [self.heightArray addObject:[NSNumber numberWithDouble:height]]; } return height; }刷新tableView时记得清空高度缓存数组
// 设置表头 self.contentTableView.header = [CQHeader headerWithRefreshingBlock:^{ _page = 1; [self.heightArray removeAllObjects]; [self getDataIsRefresh:YES]; }];
相关文章推荐
- iOS开发——UITableView优化之缓存cell高度
- IOS开发中UITableView(表视图)的滚动优化及自定义Cell
- iOS开发-UI控件:动态改变UITableView中的Cell高度
- iOS开发:UITableView的优化技巧-异步绘制Cell
- iOS开发:UITableView的优化技巧-异步绘制Cell
- iOS开发继iOS8后UITableView的Cell高度自适应
- 【iOS开发】UITableView Cell 自适应高度
- iOS开发之UITableview之多种Cell高度自适应实现方案的UI流畅度分析
- iOS开发:UITableView的优化技巧-异步绘制Cell
- iOS 开发 UItableView中滑动删除 cell
- 缓存cell高度开源代码阅读:UITableView-FDTemplateLayoutCell
- iOS开发UI基础—20UITableviewcell的性能优化和缓存机制
- iOS代码自定义UITableView Cell(每个Cell的高度不一样)
- IOS应用开发11——UITableView的cell点击展开
- ios开发基础1---UITableView中cell重用导致内容出错
- iOS开发 UITableView之cell
- iOS开发-UITableView表格优化
- ios-day07-02(模仿新浪微博:UITableView中cell的高度不一致,使用代码来自定义cell、UITableViewController的使用)
- 学习IOS开发UI篇--UITableView中Cell的创建方式总结
- iOS开发笔记--解决UITableView中Cell重用机制导致内容出错的方法总结