美文网首页Objective-C
UIKit性能优化学习

UIKit性能优化学习

作者: 我才是臭吉吉 | 来源:发表于2019-09-27 06:57 被阅读0次

所有的目的都是为了提高界面的FPS,提升体验(特别是列表)。

1. 调试方法

  1. 使用Instruments中的Core Animation可以查看指定应用的FPS(选择app->开始录制)
  2. 调试APP时,在XCode的 Debug -> View Debugging -> Rendering 中切换选项。

2. 选项解释及优化方式

  1. Color Blended Layers:混合颜色图层
    即存在多个视图或图层叠加的情况,且至少最上面的图层存在透明区域,因此GPU需要将多个图层颜色进行混合计算,消耗性能。
    解决方法:

    1. 尽量让图层不要存在alpha透明度,UIImageView中的image也不要有,
    2. 显示中文的UILabel不仅需要设置bgColor,还需要额外设置masksToBounds为YES(单独不会触发离屏渲染)
  2. Color Hits Green and Missed Red
    即使用了光栅化技术(layer.shouldRasterize为YES):光栅化即将视图提前渲染成为bitmap,减少显示时的性能损耗。
    光栅化有效的layer(已使用bitmap显示)显示为绿色,否则为红色(还没有生成bitmap)。
    在带有复杂效果(如阴影等)的静态页面中,可以考虑使用此选项提升性能;
    对于UITableViewCell,由于更新频率高,不推荐使用(光栅化生成的bitmap位图只会存在100ms)。
    光栅化渲染时会触发离屏渲染。

  3. Color Copied Images
    证明GPU不支持此图片格式,需要CPU先进行转换后,再进行渲染工作。

  4. Color Misaligned Imaged
    证明UIImageView与显示的UIImage尺寸不符,需要额外进行图片的压缩或拉伸。
    不匹配的UIIMageView显示为黄色。
    解决方法:尽量获取尺寸相同的UIImage进行显示;或对UIImage进行预先裁剪,使其与UIImageView尺寸相同。

  5. Color Offscreen-Rendered Yellow
    离屏渲染,即GPU需要额外单独开启一个缓冲区进行渲染操作,结束后再将结果转回到原缓冲区。由于切换上下文耗费性能,因此要慎重使用。
    出现条件及建议:

    1. layer.cornerRadius = xx; layer.masksToBounds = YES; 二者同时使用即出现(因此直接设置圆角不会触发)。
    2. layer.shadow,即设置阴影。可以通过直接设置layer.shadowPath,提前指定阴影路径,避免实时计算产生的离屏渲染。
    3. layer.shouldRasterize = YES。即光栅化
    4. drawRect方法。因此尽量不要在此进行自定义视图绘制。
    5. layer.allowGroupOpacity和layer.allowEdgeAntialiasing。组透明度和边界抗锯齿
    6. layer.mask,即给layer添加遮罩层layer。
  6. Flash Updated Region
    重绘区域,显示为黄色,对应需要频繁重绘的区域(一般在地图上会有显示,如自身位置)。
    区域越少越好。

3. 参考资料:

相关文章

  • UIKit性能调优(分享,非原创)

    UIKit性能调优实战讲解 在使用UIKit的过程中,性能优化是永恒的话题。很多人都看过分析优化滑动性能的文章,但...

  • UIKit性能优化学习

    所有的目的都是为了提高界面的FPS,提升体验(特别是列表)。 1. 调试方法 使用Instruments中的Cor...

  • 学习过的好文章(不定期更新ing)

    性能优化 bestswifter结合Instrument分析影响性能的因素,提出优化方案并解释背后的原理UIKit...

  • Instruments性能优化-Core Animation总结

    最近学习iOS性能优化相关的知识,学习了一下简书文章后做的总结 UIKit性能调优实战讲解:Instruments...

  • UIKit 性能优化

    UI(User Interface)是指手机屏幕上的图形界面,它由一个个的像素点构成,每个像素均由红、绿、蓝,三个...

  • iOS 知识收集

    性能优化 iOS 保持界面流畅的技巧 UIKit性能调优实战讲解 iOS高效设置视图圆角 使用 ASDK 性能调优...

  • Instruments性能调优实战讲解

    转自bestswifter 在使用UIKit的过程中,性能优化是永恒的话题。很多人都看过分析优化滑动性能的文章,但...

  • iOS基础知识连接汇总

    UIKit性能调优实战讲解 UITableView深度优化 iOS_@property 属性的本质是什么? iOS...

  • 简单-UIKit性能分析优化

    本文是基于UIKit性能调优实战讲解 - 简书这篇文章的总结详细请看原文 实例讲解可以参考:小心别让圆角成了你列表...

  • 面试看的东西

    :UIKit性能调优实战讲解,同时我还仔细研究了 sunnyxx 大神的优化UITableViewCell高度计算...

网友评论

    本文标题:UIKit性能优化学习

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