美文网首页
iOS两种渲染

iOS两种渲染

作者: Smicro | 来源:发表于2016-05-11 12:02 被阅读407次

    离屏渲染(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来检测性能,再选择使用哪种渲染方式。

    相关文章

      网友评论

          本文标题:iOS两种渲染

          本文链接:https://www.haomeiwen.com/subject/rnfurttx.html