iOS两种渲染

2016-05-11  本文已影响407人  Smicro

离屏渲染(Off-Screem Rendering):

渲染发生在当前屏幕之外。将渲染结果临时保存(创建缓冲区),等到要用时再取出(一般需要切换上下文)。创建缓冲区和切换上下文都会影响性能。

Instruments-CoreAnimation-(Color Offscreen-Rendered Yellow)

触发方式:

手动触发:

shouldRasterize(光栅化)

光栅化是将一个layer预先渲染成bitmap,加入缓存,缓存有效时间100ms。光栅化是一种缓存机制,适合于较复杂的、静态的效果。通常会选择关闭shouldRasterize。

Instruments-CoreAnimation-(Color Hits Green and Misses Red)

自动触发:

mask、shadows、edge antialiasing(抗锯齿)、group opacity、drawRect

1.关于mask补充:一般设置cornerRadius属性不会触发离屏渲染,但是我们经常会同时用到masksToBounds属性,这就会触发Off-Screen Rendering。

2.shadows,如果设置了具体的shadowPath,那么就会避开Off-Screen Rendering。如果没有设置,Core Animation会自动去计算,这样就会触发Off-Screen Rendering。

3.drawRect,重写drawRect方法,并且使用了Core Graphics的技术进行绘制(主要由CPU执行)。

拓展:GPU计算能力强于CPU,如果是涉及较多计算的Off-Screen Rendering建议不要使用drawRect。简单的Off-Screen Rendering建议使用drawRect,涉及缓冲区创建和切换上下文较少。

当前屏幕渲染(On-Screen Rendering):

渲染发生在当前用于显示的屏幕缓冲区中。

总结:使用Instruments来检测性能,再选择使用哪种渲染方式。

上一篇下一篇

猜你喜欢

热点阅读