UITableView是个表格视图,可以在表格行空间中添加多个子控件,UITableView继承了UIScrollView,默认状态下可以堆单元格进行滚动,所有的UITableViewController实例被自动设为UIScrollView委托。
UITableView的核心就是UITableViewCell的重用机制。总的来说就是UITableView只会创建一个屏幕的UITableViewCell,其他的都是丛中取出来重用的。每当Cell滑出屏幕时,就会放入到一个集合中,当要显示某一位置的Cell时,会先去集合中取,如果有,就直接拿来显示,如果没有就去创建。这样做的好处就是极大的减少了内存的开销。
UITableView有两个最主要的回调方法
根据我们创建控件的思路来看,一般我们都会觉得先调用前者再调用后者,但实际上UITableView是集成UIScrollView的,需要先确定它的contentsize及每个Cell的位置,然后才会把重用的Cell放置到对应的位置。所以UITableView的回调顺序是先多次调用后者以确定contentsize及Cell的位置,才会调用前者方法来显示在当前屏幕的Cell。
从上面可以看出,优化UITableView可以从这两个方法入手。一个负责赋值,一个负责计算高度,两者各司其职,代码功能都不要重叠,都尽可能的简单易算。在获得数据后,直接根据数据源计算出相对应的布局,并缓存到数据源中,这样在heightForRowAtIndexPath方法中就直接返回高度,而不需要每次都计算了。
总的来说,UITableView的优化主要从以下几点入手:
1、 提前算好Cell的高度
2、 异步绘制
3、 滑动时按需求加载
4、 按正确的方式来使用reuseidentifier来重用Cell
5、 尽量使所有的view opaque
6、 web内容使用异步加载并缓存结果
7、 减少subview的数量
8、 尽量不在heightFoeRowAtIndexPath中使用cellForRowAtIndexPath
9、 尽量少用addview添加董涛view,在初始化时就添加,通过hide来控制是否显示
本文摘自智车芯官网:http://www.thinkobd.cn/