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 的计算复杂度