在MacOS Core Animation中为一百个CALayers动画的最佳实践?

时间:2018-08-23 16:09:13

标签: swift animation core-graphics core-animation calayer

我正在为Xcode的Mac OS X应用开发烛台图的动画过渡。我希望图表的每个蜡烛分别但同时进行动画处理。

例如,其中一个转换具有“先入后出”的第一个烛光上升。然后,在整个动画过程的三分之一左右,下一个蜡烛将开始相同的动画。重复此过程,直到所有条形都出现为止,因此您会获得波浪效果。

基本上,我只能看到一种实际的方法:

为每个蜡烛创建一个CAShapeLayer并分别为其设置动画

乍看之下,我不喜欢这种方法,因为根据数据,我可能在蜡烛上至少有一百个图层,并且它们都立即进行动画处理。我知道Core Animation会将处理移至GPU,但我不认为这是“最佳实践”。

也许更好的方法是使用CALayer并将所有图层放在同一CGContext中,这样CAShapeLayer不会创建一百多个上下文(CGContext vs CALayer) 。但是,那仍然不能绕过我使用一百多个层。

在复杂的Mac动画开发中是否正在像正常情况那样创建许多层?

尽管如此,我仍然希望将所有蜡烛都放在一个CGMutablePath中,并找到一种复杂的方法来向CAShapeLayer添加路径,并可能用CAAnimationGroup对其进行动画处理(研究:{{ 3}})。 CAAnimationGroup不太可能给我想要的效果(Multiple paths in CAShapeLayer

我需要专家对“最佳实践”方法的意见。

[我正在使用Swift,所以请仅提供Swift示例! :)]

0 个答案:

没有答案