iOS开发之UITableView的滚动优化以及隐藏特性的使用

原创 2015年07月07日 12:53:53

郝萌主倾心贡献,尊重作者的劳动成果,请勿转载。

如果文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额随意,重在心意^_^ 

我要捐赠: 点击捐赠

Cocos2d-X源码下载:点我传送

游戏官方下载:http://dwz.cn/RwTjl

游戏视频预览:http://dwz.cn/RzHHd

游戏开发博客:http://dwz.cn/RzJzI

游戏源码传送http://dwz.cn/Nret1


影响 UITableView 滚动的流畅性的原因

1、 在代理方法中做了过多的计算占用了 UI 线程的时间

2、Cell 中 view 的组织复杂


首先要明白 tableview 的代理方法的调用顺序和时机。

对于一般的应用会有如下顺序:

1、向代理要 number Of Rows。

2、对于每行向代理要 height For Row At Index Path。

3、向代理要 当前屏幕可见的 cell For Row At Index Path 。

4、然后 cell 就显示出来了。


tableView:heightForRowAtIndexPath:很多人都把优化的重点放到了 cell for row at indexpath 那个方法里了,

在这里尽可能的少计算,但是却忽略了另一个很轻松就能提升加载时间的方法 :  

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

View 在每次 reload data 时都会要所有 cell 的高度!

这就是说你有一百行 cell,就像代理要100次每个cell 的高度,而不是当前屏幕显示的cell 的数量的高度!

对于提升 tableView:heightForRowAtIndexPath: 计算量,就是尽可能的让这个方法的计算复杂度为 O(1),

就是只是简单的从数组中取一个值,然后返回!


iOS7以上的隐藏特性

UITableView 非常快速高效,除非你开始使用tableView:heightForRowAtIndexPath:

它会开始为你表中任意元素调用此方法,

即便没有可视对象,就比如其内在的UIScrollView只是去获取正确的contentSize。

此前有一些变通方法,但都不好用。

iOS7 中,苹果公司终于承认这一问题,并添加tableView:estimatedHeightForRowAtIndexPath:这个方法

延迟了实际滚动时间成本的大部分。

如果你不知道一个cell的大小,返回UITableViewAutomaticDimension即可。


使用了以上所述方法依然不流畅

注意estimatedHeightForRowAtIndexPath和heightForRowAtIndexPath两个方法设置cell的高度要一致。


优化再优化之后依然感觉卡卡

没办法了,卡卡更健康。

微信也在卡ing...


郝萌主倾心贡献,尊重作者的劳动成果,请勿转载。

如果文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额随意,重在心意^_^ 

我要捐赠: 点击捐赠

Cocos2d-X源码下载:点我传送

游戏官方下载:http://dwz.cn/RwTjl

游戏视频预览:http://dwz.cn/RzHHd

游戏开发博客:http://dwz.cn/RzJzI

游戏源码传送http://dwz.cn/Nret1

相关文章推荐

iOS开发:UITableView的优化技巧-异步绘制Cell

最近在微博上看到一个很好的开源项目VVeboTableViewDemo,是关于如何优化UITableView的。加上正好最近也在优化项目中的类似朋友圈功能这块,思考了很多关于UITableView的优...

iOS开发——项目实战总结&UITableView性能优化与卡顿问题

标签: UITableView性能优化与卡顿问题 本文转载出处:http://www.mamicode.com/info-detail-1125512.html 1.最常用的就是cell...

iOS开发——UITableView优化之缓存cell高度

为什么要缓存高度? 因为当tableView滚动时会不停的回调- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexP...

iOS开发之UITableView优化问题

在iOS开发中tableView是最常用的控件之一,对tableView的熟悉使用是一名开发者必备的基础技能。本文主要针对tableView的优化方面提出一些建议方法,欢迎大家一块学习。 提示:如果你...

iOS开发UI篇—UITableview控件基本使用

iOS开发UI篇—UITableview控件基本使用 一、一个简单的英雄展示程序 NJHero.h文件代码(字典转模型) 1 #import 2 3 @interface NJ...

iOS开发UITableView基本使用方法总结

转载自http://mobile.51cto.com/hot-404907.htm         本文为大家呈现了iOS开发中UITableView基本使用方法总结。首先,Controll...

iOS开发UI基础—19UITableview控件基本使用

iOS开发UI篇—UITableview控件基本使用 一、一个简单的英雄展示程序 NJHero.h文件代码(字典转模型) 1 #import 2 3 @interface ...

Xcode6 IOS开发UITableView基于Storyboard的使用

1.点击项目里面的Storyboard文件,然后给当前的UIViewController控制器里面拖入TableView,如下图所示 2.然后选中tableView,选择属性里面的Prototyp...

iOS开发之有趣的UI—— UITableView控件基本使用

1.UITableView的样式 UITableView在iOS开发中非常实用且应用广泛,常见的样式有Plain和Group两种。 2.UITableView的数据展示 在UITableView中要...

大钟的ios开发之旅(8)————如何优化UITableView

/********************************************************************************************  * aut...
  • conowen
  • conowen
  • 2016年06月02日 14:46
  • 1362
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS开发之UITableView的滚动优化以及隐藏特性的使用
举报原因:
原因补充:

(最多只允许输入30个字)