iOS之tableView性能优化/tableView滑动卡顿?
2016-06-27 13:27
441 查看
本文围绕以下几点展开tableView性能优化的论述?
1.UITableViewCell重用机制?
2.tableView滑动为什么会卡顿?
3.优化方法?
4.总结
思路:赋值和计算布局分离。cellForRow负责赋值,heightRorRow负责计算高度。
3.2自定义cell绘制:
各个信息都是根据之前算好的布局进行绘制的。需要异步绘制。重写draeRect方法就不需要异步绘制了,因为drawRect本来就是异步绘制的。图文混排的绘制,coreText绘制。
3.3按需加载(UIScrollView方面):
如果目标行与当前行相差超过指定行数,只在目标滚动范围的前后制定n行加载。滚动很快时,只加载目标范围内得cell,这样按需加载,极大地提高了流畅性。
2.异步绘制,遇到复杂界面,性能瓶颈时,可能是突破口。
3.滑动时按需加载,这个在大量图片展示,网络加载时,很管用。(SDWebImage已经实现异步加载)。
4.重用cells。
5.如果cell内显示得内容来自web,使用异步加载,缓存结果请求。
6.少用或不用透明图层,使用不透明视图。
7.尽量使所有的view opaque,包括cell本身。
8.减少subViews
9.少用addView给cell动态添加view,可以初始化的时候就添加,然后通过hide控制是否显示。
1.UITableViewCell重用机制?
2.tableView滑动为什么会卡顿?
3.优化方法?
4.总结
1.UITableViewCell重用机制?
UITableView只会创建一屏幕(或者一屏幕多一点)的cell,其他都是取出来重用的。每当cell滑出屏幕的时候,就会放到一个集合中,当要显示某一位置的cell时,会先去集合中取,有的话,就直接拿出来显示,没有在创建。2.tableView滑动为什么会卡顿?
cell赋值内容时,会根据内容设置布局,也就可以知道cell的高度,若有1000行,就会调用1000次 cellForRow方法,而我们对cell的处理操作,都是在这个方法中赋值,布局等等,开销很大。3.优化方法?
3.1优化:heightForRow方法处理cell高度。思路:赋值和计算布局分离。cellForRow负责赋值,heightRorRow负责计算高度。
3.2自定义cell绘制:
各个信息都是根据之前算好的布局进行绘制的。需要异步绘制。重写draeRect方法就不需要异步绘制了,因为drawRect本来就是异步绘制的。图文混排的绘制,coreText绘制。
3.3按需加载(UIScrollView方面):
如果目标行与当前行相差超过指定行数,只在目标滚动范围的前后制定n行加载。滚动很快时,只加载目标范围内得cell,这样按需加载,极大地提高了流畅性。
4.总结
1.提前计算并缓存好高度,因为heightForRow最频繁的调用。2.异步绘制,遇到复杂界面,性能瓶颈时,可能是突破口。
3.滑动时按需加载,这个在大量图片展示,网络加载时,很管用。(SDWebImage已经实现异步加载)。
4.重用cells。
5.如果cell内显示得内容来自web,使用异步加载,缓存结果请求。
6.少用或不用透明图层,使用不透明视图。
7.尽量使所有的view opaque,包括cell本身。
8.减少subViews
9.少用addView给cell动态添加view,可以初始化的时候就添加,然后通过hide控制是否显示。
相关文章推荐
- IOS学习之蓝牙4.0 BLE
- IOS loaded the "XXXXXView" nib but the view outlet was not set.' 解决办法
- 递归算法
- 精通iOS开发--第15章 Grand Central Dispatch和后台处理之Block与Self的循环引用
- 精通iOS开发--第15章 Grand Central Dispatch和后台处理之程序生命周期 NSNotificationCenter和线程
- 文本属性Attributes
- 精通iOS开发-第15章 Grand Central Dispatch和后台处理
- 关于iOS socket的讲解介绍
- 关于iOS socket的讲解介绍
- 获取 view 所在的ViewController
- iOS调用reloadRowsAtIndexPaths Crash报异常NSInternalInconsistencyException
- ios开发release、develop、adHoc证书区别
- IOS开发中NSRunloop跟NSTimer的问题
- iOS,URL请求中的中文替换
- iOS-沙盒内视频导出到相册
- iOS hit-Testing
- iOS开发~CocoaPods使用详细说明
- MAC或iOS 创建 IPv6 WIFI热点
- iOS中Bitcode的介绍及配置
- iOS中判断Emoji表情问题