ios TableView性能优化技巧
来源:互联网 发布:湘北vs山王球员数据 编辑:程序博客网 时间:2024/05/29 15:22
UITableView是app最常用的控件之一,很多app都逃离不了,甚至于有的app全部都是UITableView,可见,这个控件的重要性非同一般的。但是,在使用UITableview上,会经常遇到性能上的问题,例如 : 滑动卡顿(最经典的是图文混排的列表)。下面,就泛谈下这个控件可以做哪些优化,使之性能得到提升。
一、视图上面的优化
1、使用不透明视图(alpha=1)。设置cell上所有视图的opaque = YES。不透明视图可以极大的提高视图的渲染速度。
2、减少视图的数目。使用自定义的view,而非预定义的view,明显会快些。顾名思义就是说,自定义cell后,cell里面的子视图也抽象封装。
二、视图方面的刷新
我们经常请求完数据后,讲数据传递给tableview后,我们需要调用表的reloadData 方法,调用这个方法后,会继续调用创建cell和高度的方法。这样的话,就有可能存在性能方面的问题,也有可能导致crash。貌似有点讲偏了,我这里要强调的是,如果我们只是局部刷新,那就采用局部刷新的方法,尽量不必要去调用reloadData。常见的场景就是例如,微信朋友圈,涉及到单条说说的评论,我们只需要刷新单个单元格或者单个组就能满足我们要求。
2.1、刷新单个cell
NSIndexPath *path = [NSIndexPath indexPathForRow:0 inSection:0];[self.tableview reloadRowsAtIndexPaths:[NSArray arrayWithObjects:path, nil] withRowAnimation:UITableViewRowAnimationFade];
2.2、 刷新局部的section
[self.tableview reloadSections:[[NSIndexSet alloc] initWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];
三、缓存视图高度
http://www.cnblogs.com/wengzilin/p/4288027.html
无论是否需要创建一个新的cell,你需要缓存rows的高度,因为这是TableView所需要的信息。如果你的cell的高度是固定的,你不必担心。然而,如果它不是固定的,你需要确保你的cell计算足够的快。
一般的做法,选择在model增加一个成员变量,CGFloat类型,用这个成员变量去记住每个cell的高度。
四、不要用AutoLayout
。使用的子视图越多,AutoLayout的效率越低,这是事实。那么为什么AutoLayout相对低效呢。是因为它要根据底层“Cassowary”的约束求解系统进行约束计算,从而得到一个唯一解,这时AutoLayout才不会报警告或错误(相信拖控件的同学肯定遇到过各种黄色警告和红包约束冲突吧)。假如内部的子控件越多,它需要进行的线性或非线性计算量越大,需要求解的约束越多,CPU计算耗费大量时间从而导致超过了一个VSync周期。相反的,假如我们进行手动布局,都是非常简单的线性计算,CPU就不用浪费那么时间,CPU的压力不会很大。(虽然这么说,但是我还是会继续取用AtuoLayout!)
- ios TableView性能优化技巧
- iOS性能优化-TableView
- iOS tableView性能优化
- iOS TableView性能优化
- ios 优化TableView技巧
- iOS TableView的性能优化
- ios tableView性能优化策略
- iOS性能优化技巧
- TableView在iOS上的性能优化
- TableView在iOS上的性能优化
- TableView 性能优化
- TableView 性能优化
- tableView cell性能优化
- tableView性能优化
- TableView性能优化
- TableView性能优化
- tableView 性能优化机制
- TableView性能优化
- 解决下拉刷新偏移
- 服务注册问题--未能加载文件和程序集
- POJ Area 1265(pick定理)
- 自动化测试关键字驱动的原理及实现
- First Blood
- ios TableView性能优化技巧
- 终于,零基础也能把App做的风生水起
- 生日了,总要写点什么
- Android控件之ToggleButton
- Hibernate createCriteria 使用
- JavaScript中的各种括号用法
- 序列化与反序列化
- oracle表数据量大时建立索引,需要加上online参数
- java-poi处理excell