iOS 高性能 UI 优化 ,不要乱用百分比

前言:
最近在看 iOS 、UI的适配及优化 ;今天准备记录两个问题:
一个是 :Color Blended Layers 性能指标,另一个是:UILabel 计算宽度时,百分比不要乱用;下面举例说明:

Color Blended Layers 性能指标

在Xcode提供的工具中,测试UI性能的一个指标:
这个选项选项基于渲染程度对屏幕中的混合区域进行绿到红的高亮显示,红色通常是由于多个半透明图层叠加引起。我们每个组件基本他是没有背景的,正如 跳到 一个空的viewcontroller ,背景是黑色的;一般我们会设置 背景色;但是,一般组合UI时,多数是不管背景的;不管背景造成的结果就是:如下图 一片红:

全红

越红表示性能越差,会对帧率等指标造成较大的影响。

在我们一般写 组件时,我看了绝大多数应用,是不考虑这个性能的;但是如果我们不想一片红,怎么提高呢;下面请看:

我们只需要设置她的背景色、让他在渲染时,只在 指定的平面层渲染,在手机平面,要是不设置,他要根据 他所在位置的view层级,每层都要计算,性能当然就低了;

我们把上面红的 都 加上背景

   label.backgroundColor=UIColor.white

然后的结果如下:


变粉

变粉色了;是不是很神奇;所以我们在写代码的时候,这一点还需要注意起来;

如果想要更好的性能,可以自定义view;尤其简单的label 只显示个文字的时候;可以自定义;

不要乱用百分比

不知道大家有没有遇到过这种问题:
下面是UI布局:


布局

按理说没有任何问题:但是结果是:ipnone 8 没有问题,ipnone x 多出了一束线 ,这是啥鬼?

适配出错

经思考、看书、加实践,测试:
首先我们下这个宽:
左边日期的宽:经断点得到是 :164.929999470711

这里写图片描述

ipnone 8 的分辨率:1334 x 750 像素分辨率
iphonex 的分辨率: 2436*1125 像素分辨率

从分辨率 来看 ,ipnone x 更高清;也就是说,你设置的宽度,小数点后越多,他都可以给你显示出来;适配是不是就出问题了;啥时候小数点后位多了呢;就是我们常用的百分比,拿一个除不尽的数,去做宽高;

  • 一个性能不好,增加了GPU 的计算复杂读度;
  • 一个偶尔的意外 是不是就出来了;
    得出的结论,设置宽高 时,要确保宽度 可以由某一百分比均匀分配;不要出现 除不尽的数据;
    现在我们修改一下,看是否还会有:把高改成64


    这里写图片描述

结果显示:没有了

image

总结

  • 加背景(且尽量 不加透明背景) 不增加 渲染的复杂读
  • 注意宽高的设置; 要确保宽度 可以由某一百分比均匀分配;不要出现 除不尽的数据; 不增加 GPU 的计算复杂度
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,815评论 1 92
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,646评论 8 265
  • 文 灰庭清澄 1 你的寂寞一米每秒 我的流年随光了了 你的花开零落 我的滴滴答答的钟表 2 一个光无法透析的世界 ...
    林安芒阅读 323评论 2 4
  • 人其实特别需要跟师。 因为只有跟师了以后,你才可能回到学生的状态,看到自己的浅陋和学问的浩瀚,并重新开始对世界中的...
    玥玥妈妈阅读 189评论 0 0
  • 看《人民的名义》这个电视剧,很多企业家为大风厂的老板蔡成功的命运而嗟叹,那做为同是做创业的,做企业管理的伙伴们,你...
    村子老师阅读 389评论 0 0