UITableView的优化
2016-02-19 17:33
330 查看
参考别人整理的UITableView优化技巧:http://www.cocoachina.com/ios/20150528/11968.html
一.要知道UITableView的工作原理,
(1)核心:UITableview的重用机制
当要显示 某一位置的cell时,先去重用池中取,若重用池中没有,才去创建,这样极大的减少了内存的开销
(2)两个回调方法tableView:cellForRowAtIndexPath:和tableView:heightForRowAtIndexPath:的调用顺序
因为UITableview继承自UIScrollView,需要先确定contenSize及每个cell的位置,所以先多次调用tableView:heightForRowAtIndexPath:以确定contenSize及cell的位置,然后再调用tableView:cellForRowAtIndexPath:从而显示cell的内容
要显示100个cell,当前屏幕显示5个
刷新(reload)的时候先调用100次tableView:heightForRowAtIndexPath:再调用5次tableView:cellForRowAtIndexPath:
滚动屏幕时,每当cell滚入屏幕,都会先调用一次tableView:heightForRowAtIndexPath:再调用一次tableView:cellForRowAtIndexPath:
二.对UITableview进行优化时,要将内容的显示和对高度的计算分开进行
三.UITableview优化总结
1)提前计算并缓存好高度(布局),因为tableView:heightForRowAtIndexPath:是调用最频繁的方法
2)异步绘制,遇到复杂界面,遇到性能瓶颈时,可以考虑异步绘制
3)滑动时按需加载,用在大量图片展示,网络加载的时候(SDWebImage已经实现异步加载,配合这条性能杠杠的)
四.其它的优化方式
1)正确使用reuseIdentifier来重用Cells
2)如果cell内实现的内容来自web,使用异步加载,缓存请求结果
3)在heightForRowAtIndexPath:中尽量不使用cellForRowAtIndexPath:,如果你需要用到它,只用一次然后缓存结果
4)尽量少用addView给cell动态添加view,可以初始化时就添加。然后通过hide控制是否显示
一.要知道UITableView的工作原理,
(1)核心:UITableview的重用机制
当要显示 某一位置的cell时,先去重用池中取,若重用池中没有,才去创建,这样极大的减少了内存的开销
(2)两个回调方法tableView:cellForRowAtIndexPath:和tableView:heightForRowAtIndexPath:的调用顺序
因为UITableview继承自UIScrollView,需要先确定contenSize及每个cell的位置,所以先多次调用tableView:heightForRowAtIndexPath:以确定contenSize及cell的位置,然后再调用tableView:cellForRowAtIndexPath:从而显示cell的内容
要显示100个cell,当前屏幕显示5个
刷新(reload)的时候先调用100次tableView:heightForRowAtIndexPath:再调用5次tableView:cellForRowAtIndexPath:
滚动屏幕时,每当cell滚入屏幕,都会先调用一次tableView:heightForRowAtIndexPath:再调用一次tableView:cellForRowAtIndexPath:
二.对UITableview进行优化时,要将内容的显示和对高度的计算分开进行
三.UITableview优化总结
1)提前计算并缓存好高度(布局),因为tableView:heightForRowAtIndexPath:是调用最频繁的方法
2)异步绘制,遇到复杂界面,遇到性能瓶颈时,可以考虑异步绘制
3)滑动时按需加载,用在大量图片展示,网络加载的时候(SDWebImage已经实现异步加载,配合这条性能杠杠的)
四.其它的优化方式
1)正确使用reuseIdentifier来重用Cells
2)如果cell内实现的内容来自web,使用异步加载,缓存请求结果
3)在heightForRowAtIndexPath:中尽量不使用cellForRowAtIndexPath:,如果你需要用到它,只用一次然后缓存结果
4)尽量少用addView给cell动态添加view,可以初始化时就添加。然后通过hide控制是否显示
相关文章推荐
- Android Volley完全解析(三),定制自己的Request
- ZOJ 2966 Build The Electric System(最小生成树)
- iOS设计UI工具大全
- 14.UITextField内容缩进/placeholder改变颜色
- UIbutton 防止重复点击
- No location, value may have been optimized out
- UITableView回滚到顶部的几种方法
- 深入学习:NSOperationQueue, NSRunLoop和线程安全
- ReferenceQueue
- UI总结
- UIButton.titleLabel.text和[UIButton setTitle:],UIButton.imageView.image和[UIButton setImage]的区别
- UICollectionView
- UISlider增加触动区域
- UICollectionView
- UIScrollView的三个属性
- WinCE Overlay - 示例:mosquito
- 22个值得收藏的android开源代码-UI篇
- 毕业设计(二十)---使用easyUI dialog 对话框做登陆弹出 表单验证
- 13.UILabel 中的一些属性
- Multiple build commands for output file