UI渲染的优化

[http://www.jianshu.com/p/619cf14640f3]

Instrument Core Animation

Color Blended Layers

图层混合,红色表示有,绿色表示没有

Color Hits Green and Misses Red

图层是否命中缓存,红色表示没有,绿色表示有。
缓存中的对象有效期只有100ms,即如果在0.1s内没有被使用就会自动从缓存中清理出去。
通过开启图层光栅化启用缓存,label.layer.shouldRasterize = true

Color Copied Images

图片是否需要转化。蓝色表示有转化。GPU支持的格式有限,遇到不支持的格式需要进行转化。

Color Misaligned Images

黄色表示图片进行了缩放,紫色表示像素没有对齐
图片最好和UIImageViewsize一致

Color Offscreen-Rendered Yellow

图层是否有离屏渲染,黄色表示有。
以下情况可能会导致触发离屏渲染:

1、重写drawRect方法,cpu的离屏渲染
2、有mask或者是阴影(layer.masksToBounds, layer.shadow*),模糊效果也是一种mask
3、layer.shouldRasterize = true
Color Compositing Fast-Path Blue

蓝色表示硬件绘制

Flash updated Regions

发生重绘的区域

优化方案

避免图层混合

1、确保控件的opaque属性设置为true,确保backgroundColor和父视图颜色一致且不透明如无特殊需要,不要设置低于1的alpha值
2、确保UIImage没有alpha通道

避免临时转换

1、确保图片大小和frame一致,不要在滑动时缩放图片
2、确保图片颜色格式被GPU支持,避免劳烦CPU转换

慎用离屏渲染

1、绝大多数时候离屏渲染会影响性能
2、重写drawRect方法,设置圆角、阴影、模糊效果,光栅化都会导致离屏渲染
3、设置阴影效果是加上阴影路径
4、滑动时若需要圆角效果,开启光栅化

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • (1)Time Profiler:用来测量被方法/函数打断的CPU使用情况。 (2)Core Animation:...
    钱嘘嘘阅读 5,559评论 2 6
  • Core Animation工具用来监测Core Animation性能。它给我们提供了周期性的FPS,并且考虑到...
    F麦子阅读 4,225评论 0 1
  • UIKit性能调优实战讲解 在使用UIKit的过程中,性能优化是永恒的话题。很多人都看过分析优化滑动性能的文章,但...
    说一句话介绍自己阅读 1,937评论 0 4
  • 落英/文 阴沉的天淅沥着雨 迈着步子走 叶落的柏油路上 掺杂着飘谢的花 疏松的眉微皱着 心里一阵淡淡的痛 泪花...
    大桂圆Y阅读 1,579评论 2 10
  • 1、不离开是为了未完的事与牵挂的人,离开也是。 2、小时候不理解什么是面具,直白做自己,不好么。直到自己笑对不喜欢...
    十字魔偶阅读 1,235评论 0 0