如何提高 CALayer 动画的性能?

Posted

技术标签:

【中文标题】如何提高 CALayer 动画的性能?【英文标题】:How to improve performance of CALayer animations? 【发布时间】:2013-01-12 04:57:57 【问题描述】:

在学习 Core Animation 时,我制作了一个 UIView 类别,它可以将子视图分成很多块并散开。 https://github.com/minorblend/HNTileDisappear 然而,当瓦片的数量不小时,动画的 FPS 会急剧下降。 有没有什么办法或者想法可以提高这种CALayer动画的性能?

【问题讨论】:

【参考方案1】:

我想到了一些事情:

1) 在您的图层上将 shouldRasterize 设置为 YES

2) 如果可以,请不要在帧中使用小数值

3) 使图层不透明

4) 尝试在图层上设置drawsAsynchronously 属性

【讨论】:

即使图层沿路径进行动画处理,光栅化仍然有用吗?顺便说一句,我想支持 ios >= 5,所以不能使用 drawSynchronously 属性并且已经使用 rintf() 使图层帧中的所有值都为整数 不确定它是否特别有助于路径动画。我已经在常规动画中使用它,效果很好。您可以测试它是否有助于使用 Instruments。 属性名不应该是drawsAsynchronously吗? @Monobono 是的,谢谢 :) 我可能打字太快了。现在将更正答案。

以上是关于如何提高 CALayer 动画的性能?的主要内容,如果未能解决你的问题,请参考以下文章

CALayer总结

使用 CALayer 显示 CGPaths 会影响 iOS 中的性能吗?

CALayer - 暗影导致性能下降?

如何使用 CATransaction 为 CALayer 的出现设置动画?

如何在更改其边界的动画期间强制重绘 CALayer

如何在动画时更改 CALayer 的颜色