您的位置:首页 > 产品设计 > UI/UE

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控制是否显示
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: