提升表视图的性能
UITableView做为应用中最经常使用的视图,它的性能优化问题几乎是常常说起。下面对在非网络访问状况下的表视图性能优化进行了主要的几点说明:
1.自定义类或XIB文件时
在系统提供的样式不能知足咱们的时候,咱们常常会建立自定义类或者XIB文件来自定义单元格样式。
在以前,咱们一般经过loadNib的方式或者在代理方法中继续使用老的方法来设置重用,管理缓存池。在IOS6之后,咱们能够经过注册的方式在注册单元格甚至表头视图,让系统来更高效的进行管理。
2.InterfaceBuilder
听说有不少偏执的工程狮们坚持手打代码来完成工程,讨厌拖拖拽拽。不过随着IB的不断强大,已经有愈来愈多的人喜欢上了使用IB来创建和管理界面。在新的Xcode5中,IB又进步了很多。回到正题,尽管如此,在使用高性能的Cell时,仍是推荐使用代码来建立单元格类。当UITableViewCell拥有多个子视图时,IOS的渲染机制会拖慢速度。重写drawRect直接绘制内容的方式能够提升性能,而不是在类初始化的时候初始化一些label或者imageview等。
3.图层颜色问题
透明图层对渲染性能会有必定的影响,系统必须将透明图层与下面的视图混合起来计算颜色,并绘制出来。减小透明图层并使用不透明的图层来替代它们,能够极大地提升渲染速度。
4.渲染中注意的问题
绘制时要尽量的避免分配资源,好比UIFont,NSDateFormatter或者任何在绘制时须要的对象,推荐使用类层级的初始化方法中执行分配,并将其存储为静态变量。
5.为代理方法瘦身
咱们常常能看到在项目中,
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
这个方法中的代码多的吓人,咱们能够讲一些数据绑定到cell中,或者在有多个tableview的时候,将其绑定到其余的tableviewcontroller中去。这样能够方便维护和管理,其实也对程序运行性能有很大的帮助。
手工绘制单元格
下面就绘制一个表视图单元格,并在表视图中显示。
初始化数据
重点在于绘制,我首先建立了一个继承自UITableViewCell的父类一会让咱们的单元格继承它,父类中有一个UIView类型的contentView成员,全部的绘制将在这个成员上进行。

下面是绘制单元格
在初始化类方法中初始化字体资源
将数据绑定到这个单元格中

实现父类的drawContentView方法,实现绘制

虽然方法很长,可是只要会简单的quartz绘图这些都是最基础的方法。
完成后咱们讲这个类注册到tableview中
[self.tableView registerClass:[HRCustomCell class] forCellReuseIdentifier:CellIdentifier];
再来看咱们的代理方法
就只有3行,比把数据都从这里赋值的方法要简洁许多。
若是用真机调试,性能也要比使用非手工绘制的性能要好不少。
以上为本篇博客所有内容,欢迎指正和交流。转载注明出处~