iOS总结-性能优化-UITableView性能优化-定义一种Cell

随着APP用户界面内容越来越丰富,,再强的手机可能都无法同时渲染复杂的UI界面和保证流畅的体验.

关于UITableView怎么实现,正常的当然是用UITableview+自定义的UITableviewCell.

本篇的优化策略:

只定义一种cell

提前计算并缓存每个Cell的高度

提前创建真正显示的/需要加工的数据并缓存

缓存View

其他

只定义一个Cell: 具体的还是要分析页面特征是否相似度很高.重用=大致固定数量的Cell,

UITableView已经为我们提供了Cell的重用,如registerNib:forCellReuseIdentifier注册自定义的Cell的Nib,然后在"cellForRowAtIndexPath"的时候用"dequeueReusableCellWithIdentifier"获取重用cell

所以,我们完全可以中创建一种Cell,虽然这样一个Cell的"体积"可能会很大,但是介于Cell的数量不会很多

补充:如果Cell的共有特征还是蛮多的,可以尝试建一个Cell,虽然这个Cell的体积可能会很大,但是重用性很强,完全可以接受的.

只定义一种Cell的好处:

减少代码量,减少Nib文件的数量,统一一个Nib文件定义Cell,容易修改/维护.

基于Cell的重用,真正运行时铺满屏幕所需的Cell数量大致是固定的,设为N个.如果只有一种Cell,就只有N个cell的实例;如果M种Cell,那么运行时最多可能会是M*N=MN个cell的实例,能少点就少点.

善用hidden隐藏(显示) SubView

既然只定义一种Cell,就把所有不同类型的view都定义好,放在cell里面,通过hidden显示/隐藏,来显示不同类型的内容.

所以我们在"cellForRowAtIndexPath"函数中,设置cell的样式/内容时,通过显示/隐藏对应的子view.

在用户快速滑动中,只是单纯的显示/隐藏subview比实时创建要快.

对高度进行缓存,提前创建真正显示的,需要加工的数据并缓存

也可以缓存View

其他:  尽量设置Cell的view为opaque,避免GPU对Cell下面的内容进行绘制

          避免大量的图片缩放/颜色渐变等

         避免同步的从网络/文件获取数据   必须的

        用shadowPath创建阴影

       尽量减少subview的数量. 多用drawRect绘制元素, 替代用view显示

       尽量显示大小刚好合适的图片资源

    缓存一切可以缓存的,就是用空间替换时间

   在UITableView的delegate/dataSource方法中,减少任何不必要的操作,异步绘制

参考http://tutuge.me/2015/02/19/提升UITableView性能-复杂页面的优化/

http://www.cocoachina.com/ios/20150602/11968.html

猜你喜欢

转载自blog.csdn.net/qq_28551705/article/details/84646167