[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
黄色表示图片进行了缩放,紫色表示像素没有对齐
图片最好和UIImageView
的size
一致
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、滑动时若需要圆角效果,开启光栅化
网友评论