美文网首页iOS知识点ios专题selector
iOS shouldRasterize光栅化--离屏渲染

iOS shouldRasterize光栅化--离屏渲染

作者: 路漫漫其修远兮Wzt | 来源:发表于2018-05-08 14:21 被阅读494次

参考资料:
ios开发中view.layer.shouldRasterize = YES 的使用说明
iOS 离屏渲染的研究
解决常见的masksToBounds离屏渲染带来的性能损耗
http://www.cocoachina.com/cms/tags.php?/离屏渲染/
深刻理解移动端优化之离屏渲染
iOS离屏渲染优化(附DEMO)

离屏渲染的触发方式

设置了以下属性时,都会触发离屏绘制:

shouldRasterize(光栅化)
masks(遮罩)
shadows(阴影)
edge antialiasing(抗锯齿)
group opacity(不透明)
复杂形状设置圆角等
渐变

其中shouldRasterize(光栅化)是比较特别的一种:
光栅化概念:将图转化为一个个栅格组成的图象。
光栅化特点:每个元素对应帧缓冲区中的一像素。

光栅化有什么好处?

shouldRasterize = YES在其他属性触发离屏渲染的同时,会将光栅化后的内容缓存起来,如果对应的layer及其sublayers没有发生改变,在下一帧的时候可以直接复用。shouldRasterize = YES,这将隐式的创建一个位图,各种阴影遮罩等效果也会保存到位图中并缓存起来,从而减少渲染的频度(不是矢量图)。

举个栗子

如果在滚动tableView时,每次都执行圆角设置,肯定会阻塞UI,设置这个将会使滑动更加流畅。
当shouldRasterize设成true时,layer被渲染成一个bitmap,并缓存起来,等下次使用时不会再重新去渲染了。实现圆角本身就是在做颜色混合(blending),如果每次页面出来时都blending,消耗太大,这时shouldRasterize = yes,下次就只是简单的从渲染引擎的cache里读取那张bitmap,节约系统资源。

而光栅化会导致离屏渲染,影响图像性能,那么光栅化是否有助于优化性能,就取决于光栅化创建的位图缓存是否被有效复用,而减少渲染的频度。可以使用Instruments进行检测:

当你使用光栅化时,你可以开启“Color Hits Green and Misses Red”来检查该场景下光栅化操作是否是一个好的选择。
如果光栅化的图层是绿色,就表示这些缓存被复用;如果是红色就表示缓存会被重复创建,这就表示该处存在性能问题了。

注意:
对于经常变动的内容,这个时候不要开启,否则会造成性能的浪费

相关文章

  • iOS性能优化涉及方面总结

    性能优化:界面卡顿优化:1、减少离屏渲染,造成离屏渲染的有shouldRasterize(光栅化)、mask(遮罩...

  • 离屏渲染

    哪些操作会触发离屏渲染? 1、光栅化,layer.shouldRasterize = YES2、遮罩,layer....

  • iOS shouldRasterize光栅化--离屏渲染

    参考资料:ios开发中view.layer.shouldRasterize = YES 的使用说明iOS 离屏渲染...

  • ios开发shouldRasterize光栅化--离屏渲染

    shouldRasterize(光栅化)是比较特别的一种离屏渲染:光栅化概念:将图转化为一个个栅格组成的图象。光栅...

  • 哪些场景可以触发离屏渲染?

    设置了以下属性时,都会触发离屏绘制: shouldRasterize(光栅化)masks(遮罩)shadows(阴...

  • 性能优化之-tableView的栅格化(光栅化)

    关于CALayer的shouldRasterize(光栅化) 开启shouldRasterize后,CALayer...

  • 零零碎碎的知识点

    1.圆角,图层遮罩,阴影或者是图层光栅化(GPU离屏渲染)会强制Core Animation提前渲染图层的离屏绘制...

  • 性能优化的点

    1 离屏渲染 光栅化 圆角(生成圆角图 系统圆角 贝塞尔曲线遮罩) 后两个会离屏渲染 阴影 加上showdowPa...

  • iOS笔记

    iOS 性能优化 产生离屏渲染:圆角,阴影,光栅化,透明度,遮罩, 使用CGContext在drawRect中绘制...

  • iOS离屏渲染

    iOS-离屏渲染详解关于iOS离屏渲染的深入研究关于离屏渲染这两片文章分析的很详细。 渲染过程 根据渲染流水线示意...

网友评论

    本文标题:iOS shouldRasterize光栅化--离屏渲染

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