iOS:我应该为动画添加UIViews还是CALayers?

时间:2011-01-14 00:25:40

标签: ios uiview core-animation calayer caanimation

假设我想在视图中添加50个图像,以便为它们制作动画。我们假设我正在计划使用Core Animation(例如,CABasicAnimation)而不是“UIView”动画。

我最好通过添加50个子视图或50个子图层来实现此功能吗?它有所作为吗?

感谢。

4 个答案:

答案 0 :(得分:17)

在我描述here时,我在动画中使用了UIViews和CALayers,发现它们之间的性能差异可以忽略不计。 UIViews是层周围非常轻量级的包装器。此外,您需要的任何基于图层的动画都可以轻松应用于UIView的背景层。

我已经在我想要创建跨平台(Mac / iOS)UI元素的情况下直接使用CALayers,因为CALayers在两个平台上的实现几乎完全相同(与显着不同的NSView和UIViews不同)。 CALayers没有任何开箱即用的触摸处理程序,但如果需要,您可以添加该功能。

还有一些边缘情况,您可能希望直接使用图层,例如尝试对图层进行有限的3-D操作(如在CoverFlow效果中)或使用CAReplicatorLayer生成粒子效果时。 / p>

答案 1 :(得分:1)

UIViews包含子图层,因此它们的重量较重,并且包含所有50个图像可能不需要的内容,例如事件和触摸处理程序/变量。因此,使用图层可能会稍微提高效率,并且比使用每个图像的视图使用更少的内存。

答案 2 :(得分:1)

这么少量图像的差异可以忽略不计。使用最方便的。

答案 3 :(得分:0)

我还没有完成动画(但是:-),但我记得读过它的东西建议创建一个图像,其上全部50个平铺,然后在绘图时偏移到正确的图像。这样你只需要一个图层或UIImage或其他什么来显示它。我不知道速度,但我猜它会节省内存,可能更容易管理和编码。