美文网首页
ios 性能优化细节记录

ios 性能优化细节记录

作者: 惊蛰_e3ce | 来源:发表于2019-11-27 22:33 被阅读0次

    1:iOS-Color Blended Layers

    实测有效 并且不会引起离屏渲染

    Color Blended Layers 通过模拟器Debug可以查看视图中颜色混合.如果视图中的颜色混合越多,那么GPU通过混合纹理计算出像素的RGB值需要消耗的时间就越长,GPU的使用率就越高,可以通过减少颜色混合来提升滑动的流畅性.
    像素混合是只同一个区域两个不同的View的叠加,顶部视图的颜色有不透明度,那么顶部视图会和底部视图发生颜色混合,为了避免像素混合,尽可能地为顶部视图设置背景色,且设置opaque为YES,这样会减少GPU的计算.
    UILabel在iOS8以前,UILabel使用的是CALayer作为底图层,而在iOS8开始,UILabel的底图层变成了_UILabelLayer,绘制文本的方式发生了改变.因此opaque设置无效.需要设置masksToBounds为yes。 (来源:https://www.jianshu.com/p/bdd39a56142a

    常规view的设置圆角 也会导致颜色混合 如果无交互事件可以用CAShapeLayer来代替 CALayer仍会导致颜色混合问题 如图所示

    旋转45度也会导致颜色混合

    2:iOS-Color Off-Screen Rendered

    shadow阴影引发的离屏渲染 实测有效 但是path设置不当可能会影响阴影效果

    redView2.layer.shadowPath = [UIBezierPath bezierPathWithRect:redView2.bounds].CGPath;
    
    ##3:能用CAShapeLayer实现的就不要用drawRect重绘**
    原因分析: [http://blog.csdn.net/sandyloo/article/details/51063799](https://link.jianshu.com?t=http://blog.csdn.net/sandyloo/article/details/51063799)
    
    *   渲染快速。CAShapeLayer使用了硬件加速,绘制同一图形会比用Core Graphics快很多。
    *   高效使用内存。一个CAShapeLayer不需要像普通CALayer一样创建一个寄宿图形,所以无论有多大,都不会占用太多的内存。
    
        1.绘制图形性能的优化最好的办法就是不去绘制。
        2.利用专有图层CAShapeLayer代替绘图需求。
        3.不得不用到绘图尽量缩小视图面积,并且尽量降低重绘频率。
        4.异步绘制,推测内容,提前在其他线程绘制图片,在主线程中直接设置图片。
    
    

    相关文章

      网友评论

          本文标题:ios 性能优化细节记录

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