TabelView图片圆角的性能优化测试

作者: 李丘 | 来源:发表于2017-01-14 01:21 被阅读146次

导语

控件切圆角是我们 iOS 开发中经常要做的事情,如果仅仅是单一控件进行切圆角的话,对性能的影响并不大,毕竟现在手机的性能是越来越好了。不过当切圆角遇上 TablevView 的时候,就会出现大量的切圆角,这个时候就需要注意性能的优化了。

网上也有很多切圆角的方式,本篇文章只是对常见的两种比较简单的切圆角的方式进行比较,并对切圆角的优化方案进行测试(优化方案在下文)。

切圆角方式

1.使用圆形的 CAShapeLayer 作为图片的 mask

// 方案一
CAShapeLayer *roundMask = [CAShapeLayer layer];
 
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 70, 70)];
    
roundMask.path = path.CGPath;
    
image.layer.mask = roundMask;

2.使用 layer.cornerRadius 切圆角

// 方案二
image.layer.cornerRadius = 35;
image.layer.masksToBounds = YES;    

UI效果图

UI.png

测试设备

为了测试大量切圆角对不同性能的设备的影响,本人找了三台iPhone设备来进行对比测试。

1.iPhone 5
2.iPhone 6 plus
3.iPhone 6s plus

优化方案

根据 CocoaChina 上的一篇文章提出的优化方案(对 celllayer 进行栅格化),进行性能优化。

文章传送门

// 优化方案
self.layer.shouldRasterize = YES;
self.layer.rasterizationScale = [UIScreen mainScreen].scale;

比较依据

利用 Xcode 中的 instruments 工具,检测 TableView 滚动时候的 FPS,将此数据作为两种切圆角方式对性能影响的比较依据。

FPS.png

测试方案

在这次的测试中,可变的因子一共有三个,分别是不同性能的设备,切圆角的方式以及是否使用优化方案。根据实验的单一变量原则,为了测试三种可变因子对性能的影响,本人进行了三次实验。

1.测试一:设备可变,切圆角方式选择方案一,不使用优化方案。

以下结果是多次测试后的平均结果。

测试一结果.png

小结:性能越好的设备对切圆角带来的性能损耗的抵消作用越大。

2.测试二:设备保持不变,不适用优化方案,分别使用两种不同的切圆角方式进行测试。

以下结果是多次测试后的平均结果。

测试二结果.png

小结:在相同条件下,使用第二种切圆角的方式对性能的损耗更少,所以使用第二种切圆角的方式也算一种比较好的优化方案了。

3.测试三:设备保持不变,切圆角方式一致,比较使用优化方案的之前和之后的性能。

以下结果是多次测试后的平均结果。

测试三结果.png

小结:从上图可以很明显的看出,无论是在哪种设备上,使用何种切圆角的方式,使用了栅格化优化方案之后,滑动时候的 FPS 都平均在55左右,这种用户体验已经是很好了。

总结

在需要对图片或者其他控件进行切圆角处理的时候,以下的方式可以很好的减少性能的损耗:

切圆角的方式:

image.layer.cornerRadius = 35;
image.layer.masksToBounds = YES;

对 cell 的 layer 进行栅格化:

self.layer.shouldRasterize = YES;
self.layer.rasterizationScale = [UIScreen mainScreen].scale;

相关文章

  • TabelView图片圆角的性能优化测试

    导语 控件切圆角是我们 iOS 开发中经常要做的事情,如果仅仅是单一控件进行切圆角的话,对性能的影响并不大,毕竟现...

  • iOS 图片 圆角设置性能优化

    查阅了好些关于圆角性能优化的帖子,总结下记录下来.首先:DSImageViewRound 使用方法iOS图片高性能...

  • UIKit - UIImageView

    图片模式 UIViewContentMode 设置 Cell 中 imageView 的大小 性能测试及优化 前...

  • 表格性能优化-不使用cornerRadius设置圆角

    此子必成大器 本文介绍内容主要是tableView的性能优化之不使用cornerRadius设置图片圆角 有人问我...

  • iOS图片设置圆角性能优化

    对图片进行圆角处理会相比于直角,它更加柔和优美,是一种很常见的视图效果,在APP中常用于对用户头像的美化,但是设置...

  • iOS性能优化之图片圆角

    在Apple官方文档中多次提出开发时,避免触发离屏渲染效果.离屏渲染触发的情况有很多种,具体可参考iOS离屏渲染相...

  • iOS性能优化<关于圆角、阴影、绘图>

    说到性能优化首先我们都会想到图片不能用圆角啊,不能使用阴影等等。 https://github.com/pengj...

  • iOS图片圆角优化(一)

    关于图片圆角的,用到了大量圆角图片。然而,系统圆角会导致离屏渲染的问题,出于性能考虑,于是有了图片圆角渲染工具HJ...

  • Spark 性能优化方案

    Spark 性能优化方案(转自李智慧的Spark性能优化方案): Spark性能测试工具 •Spark性能测试基准...

  • 总结7

    性能测试 性能测试 是 性能优化 的 前提和基础性能测试 是 性能优化结果的 检查和衡量标准主观视角:用户感受到的...

网友评论

  • Rumbles:为什么我100多个圆角也不卡 测试UIImageView 和 UIButton
  • Erbash:测试二结果.png里面的iphone 5s 优化后的fps值对么?
    李丘:@开发者Maskmale 那是iPhone 5,比较老的设备了,性能不是很好,确实是测试的结果

本文标题:TabelView图片圆角的性能优化测试

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