UITableView 显示优化
2016-01-26 15:35
309 查看
今天被问到在UITableView的滑动过程中,怎么对其进行优化,使其不卡顿。
回答的时候有点仓促,感觉很多了解的东西没有说出来,总结下吧。
首先是,高度显示优化。
先用estimatedRowHeight这个属性,配合AutoLayout,设置rowHight = UITableViewAutomaticDimension,cell就变成自适应的高度。
同时,还可以 利用RunLoop空闲时间执行预缓存任务。
上面的文章介绍了一种找到优化的合适方案:用RunLoopObserver 找到 kCFRunLoopDefaultMode 的空闲时间片来计算。
可优化地方:
确保控件的opaque属性设置为true,确保backgroundColor和父视图颜色一致且不透明。
如无特殊需要,不要设置低于1的alpha值。
确保UIImage没有alpha通道。
避免临时转换
确保图片大小和frame一致,不要在滑动时缩放图片。
确保图片颜色格式被GPU支持,避免劳烦CPU转换。
慎用离屏渲染
绝大多数时候离屏渲染会影响性能。
重写drawRect方法,设置圆角、阴影、模糊效果,光栅化都会导致离屏渲染。
设置阴影效果是加上阴影路径。
滑动时若需要圆角效果,开启光栅化。
参考
① http://www.cocoachina.com/ios/20160208/15238.html
回答的时候有点仓促,感觉很多了解的东西没有说出来,总结下吧。
首先是,高度显示优化。
先用estimatedRowHeight这个属性,配合AutoLayout,设置rowHight = UITableViewAutomaticDimension,cell就变成自适应的高度。
同时,还可以 利用RunLoop空闲时间执行预缓存任务。
上面的文章介绍了一种找到优化的合适方案:用RunLoopObserver 找到 kCFRunLoopDefaultMode 的空闲时间片来计算。
可优化地方:
确保控件的opaque属性设置为true,确保backgroundColor和父视图颜色一致且不透明。
如无特殊需要,不要设置低于1的alpha值。
确保UIImage没有alpha通道。
避免临时转换
确保图片大小和frame一致,不要在滑动时缩放图片。
确保图片颜色格式被GPU支持,避免劳烦CPU转换。
慎用离屏渲染
绝大多数时候离屏渲染会影响性能。
重写drawRect方法,设置圆角、阴影、模糊效果,光栅化都会导致离屏渲染。
设置阴影效果是加上阴影路径。
滑动时若需要圆角效果,开启光栅化。
参考
① http://www.cocoachina.com/ios/20160208/15238.html
相关文章推荐
- Xcode编译报错 does not contain bitcode. You must rebuild it。。。
- ui网址
- iOS给UIButton添加一个新的属性
- IOS开发 使用XIB自定义一个UIView
- 蓝牙即时通信
- 史上最完整交互设计基本原则
- UESTC 1265
- NGUI所见即所得之UIAtlasMaker , UIAtlas
- 分类器的评价
- UITextView中禁止输入表情Emoji
- leetcode187. Repeated DNA Sequences
- 使用xib方式创建UITableViewCell,设置Label自动换行注意事项
- UIStatusBarStyle PreferredStatusBarStyle does not work
- 原生的UITableViewCell高度自适应,textLabel自动换行显示
- 使用ttXactAdmin、ttSQLCmdCacheInfo、ttSQLCmdQueryPlan获取SQL相关具体信息[TimesTen运维]
- request和response
- 300. Longest Increasing Subsequence
- IOS-49-UIActionSheet在iOS8后已废弃,以下为各版本通用适配办法
- LeetCode304. Range Sum Query 2D - Immutable
- UI方面总结