您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页ios性能优化--label上汉字图层混合问题

ios性能优化--label上汉字图层混合问题

来源:二三娱乐

说这个问题之前,我们先来说说什么是图层混合,图层混合为什么会影响性能?

首先弄懂这个问题,我们要先了解一下像素。
像素
屏幕上的每一个点就是一个像素,每个像素可有各自的颜色值,可采三原色显示,由R、G、B(有的还有alpha通道)构成。
像素的概念了解后,我们来说一下什么是图层混合?
图层混合
如果屏幕的一块区域上有多个图层(layer),每个图层都会有一定的透明度,那么最后这块区域的显示效果就是这些图层共同作用的结果,这种结果需要cpu对每个图层的颜色进行计算,需要消耗更多的cpu资源。如果我们把最上层的layer设定为不透明,那么cpu就不需要计算底层的layer的色值,这样就可以节约cpu的计算量,节约资源。


好了,进入正题:
我随意谢了个界面,打开Instruments,选择CoreAnmation,注意必须在真机上测试。
勾选color Blended Layers选项查看图层混合

图层混合选项

看到的效果是这样:

label图层混合

发现label发生了图层混合,下面我们把label的背景颜色设置成白色(这个会经常忘记设置背景颜色)

设置背景颜色

再次测试,发现英文没有问题,但是中文确还是有图层混合的情况

中文的图层混合

这个问题是由于中文的话,会有个子layer,解决办法就是选中cliptobonds


解决

再次测试


没有图层混合

发现已经没有图层混合的情况了。但是这里需要注意,如果label有圆角的需求,也就是当你用了layer.cornerredius一定不能用cliptobounds,这样会形成离屏渲染,离屏渲染如果过多会严重影响性能(掉帧),这种情况下如果图层混合可以不用管,我用coreanmation测试发现微信也没有处理label中文显示图层混合的问题,想来这个对性能的影响也不会很大。

Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务