iOS三种切圆角的方式对比,结果我震惊了...

离屏渲染的概念:
在屏幕外面创建新的缓冲区,然后渲染到纹理中,最后将结果渲染到当前显示屏幕的帧缓冲区中。
那么为什么离屏渲染耗性能:主要原因是环境切换(转换环境到屏幕外缓冲区,转换屏幕到帧缓冲区)。
所以,界面如果在滚动过程中有大量的离屏渲染发生,会严重影响帧率。

以上观点纯属听说,至于是真是假,说的人多了,大家也就都信了,于是在写项目的过程中,总是有意的去考虑一些界面优化的问题,比如说切圆角。
如今,切圆角真的已经被玩坏了,百度搜索“iOS切圆角”,各种各样的答案,让你眼花缭乱,经常是越看越懵逼,看到你怀疑人生。

所以,有人要问了,切圆角而已,有必要考虑那么多吗?
对于这个问题,我只能保持沉默,因为我压根都没有考虑过。

但是,为了跟上时代的潮流,毕竟这年头,不知道几种切圆角的方式,都不好意思说自己是干iOS的,面试都过不了。
因此,我连夜又学了两种切圆角的方式,做了个比较,结果我震惊了。。。

下面使用了四种方式展示图片,并记录对应的fps(帧率)和CPU使用率。
第一种方式:正常图片,无圆角;
第二种方式:使用layer.cornerRadius和layer.masksToBounds切圆角;
第三种方式:使用drawRect绘制圆角;
第四种方式:使用遮罩绘制圆角。

四种方式对应的帧率:最高为60
图片展示

由上图大家可以看出,每页加载50张图片,四种方式的平均帧率不相上下,我用的是iPhone7测试,至于在其他机型上差别大不大,欢迎大家动手试试,方便的可以留言交流。
我个人认为,除非在项目要求非常严格的APP内,平时,我们可以不用考虑由切圆角引起的性能消耗与掉帧的问题。

这里是demo地址,感兴趣的可以自己测试:https://github.com/wangzhaomeng/LLRoundedImage


如果你对界面优化感兴趣,推荐一篇文章:http://blog.ibireme.com/2015/11/12/smooth_user_interfaces_for_ios/#more-41893

觉得好,请给个star,谢谢!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容