在 iOS 9 中,cornerRadius 和离屏渲染如何影响性能

Posted

技术标签:

【中文标题】在 iOS 9 中,cornerRadius 和离屏渲染如何影响性能【英文标题】:How does cornerRadius and offscreen rendering affect performance in iOS 9 【发布时间】:2016-02-27 16:09:59 【问题描述】:

设置cornerRadius和masksToBounds会导致离屏渲染,这样会影响表格滚动时的性能。虽然这在之前已经提到过很多次了,但是有没有人在 ios 9 中做过这方面的实验?

这是我的demo,看来设置cornerRadius对滚动性能没有任何影响。在我的 iPhone 6 上,平均 fps 仍然是 57 或 58。

iOS 9 是否进行了优化或我做错了什么?

顺便说一下,我注意到当 UIImageView 是正方形时(宽度 = 高度),设置一些 UIImageView 的 conner 不会导致离屏渲染。这是怎么发生的?

【问题讨论】:

【参考方案1】:

您误解了有关 cornerRadiusmasksToBounds 的警告的含义。您只是在单元格内设置一些图像视图的cornerRadiusmasksToBounds。这些图像视图不是滚动表格视图时动画的内容:动画的是 cells。细胞内部已经完全复合;它不必在动画的每一帧上重新合成。

如果您为每个单元格设置了cornerRadiusmasksToBounds,您可能会看到对滚动产生更严重的影响。

【讨论】:

【参考方案2】:

我似乎没有向单元格添加足够的图像。当呈现图像的数量达到30或更多时,对性能的影响变得明显。平均 fps 下降到 33。

【讨论】:

以上是关于在 iOS 9 中,cornerRadius 和离屏渲染如何影响性能的主要内容,如果未能解决你的问题,请参考以下文章

对 RestKit iOS 应用程序的在线和离线支持

UIlabel layer.cornerRadius 在 iOS 7.1 中不起作用

iOS 9.3 中的 UIImageView 如何渲染 UIImage?

使用cornerradius IOS使其圆形时发出相关的UIimageView

UIlabel layer.cornerRadius在iOS 7.1中不起作用

UIImageView.layer.cornerRadius 在不同像素密度上创建圆形图像的问题 ios