美文网首页@IT·互联网
iOS离屏渲染的相关问题

iOS离屏渲染的相关问题

作者: 黑炭长 | 来源:发表于2024-03-11 18:39 被阅读0次

    本篇我们记录一下几个问题
    1、什么是离屏渲染
    2、离屏渲染是在哪一步进行的
    3、离屏渲染的影响
    4、哪些操作会造成离屏渲染
    5、离屏渲染的优化
    6、特殊的离屏渲染
    7、UILabel的特殊之处

    1、什么是离屏渲染

    离屏渲染的解释

    2、离屏渲染是在哪一步进行的


    图像显示过程

    不能直接显示为 frameBuffer,会先开辟一块内存空间由GPU合成显示相关的视图,需要显示的时候 再合成frameBuffer,是需要上下文来回切换,耗费性能

    3、离屏渲染的影响

    • 需要额外开辟一块内存空间
    • 上下文切换 耗费性能
      4、哪些操作会造成离屏渲染

    iOS模拟器开启Color Off-screen rendered,之后 =触发离屏渲染的会显示黄色


    截屏2024-03-12 18.37.38.png
    • 光栅化
      将试图缓存为一个bitmap的位图,使用的时候直接获取位图,开发过程中基本没有使用场景


      截屏2024-03-12 15.27.26.png
    • mask遮罩
      mask是在视图的上层添加一个layer,显示的时候需要主视图 + mask综合显示 触发离屏渲染


      截屏2024-03-12 15.30.03.png
    • 阴影
      阴影是在主视图的底下 处理的,显示也需要综合于主视图,综合显示


      截屏2024-03-12 15.31.58.png
    • 抗锯齿
      这个与图片的显示模式有关系,若是图片显示模式为scaleToFill,就不会触发离屏渲染


      截屏2024-03-12 15.40.58.png
    • 不透明度
      单纯的设置不透明度是不会触发离屏渲染的,但是若是主视图上有子视图,我们设置主视图的不透明度小于1,就会触发离屏渲染


      不触发
      触发
    • 圆角


      不触发
      触发

      UILabel设置了 layer.backgroudColor才会触发


      截屏2024-03-12 18.10.04.png
    • 贝塞尔曲线,不会触发离屏渲染 但是也不是最优解,这个会增加绘制成本,最优解是在原图片上加一个透明的圆角层


      截屏2024-03-12 18.10.43.png

    5、离屏渲染的优化

    • 阴影的优化
      设置layer的shadowPath


      截屏2024-03-12 18.27.32.png
    • 圆角设置注意事项,仅设置圆角不会触发离屏渲染


      截屏2024-03-12 18.08.57.png

    imageView设置了backgroudColor后会触发离屏渲染


    ![截屏2024-03-12 18.10.43.png](https://img.haomeiwen.com/i1258716/dc7a56484535b2a8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    截屏2024-03-12 18.09.18.png

    6、特殊的离屏渲染,xcode检测不出来

    截屏2024-03-12 18.12.34.png

    drawRect方法,这个地方会重新生成backing srore,增加绘制成本

    7、UILabel的特殊之处

    截屏2024-03-12 18.10.04.png

    imageview和label显示出来的颜色分别为 green和red


    截屏2024-03-12 15.21.59.png

    一般的uiview我们设置backgroudcolor设置的是 contents后边的颜色,layer.backgroudcolor是contents的颜色,
    但是UILabel则不然,我们设置backgroudColor是contents的颜色,layer.backgroudcolor是底部的颜色
    图中所示的 backgroudColor、contents、borderWidth&borderColor,任意设置两个都会触发离屏渲染

    相关文章

      网友评论

        本文标题:iOS离屏渲染的相关问题

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