假设我想将 50 张图像添加到视图中,以便为它们设置动画。假设我打算使用核心动画(例如,CABasicAnimation)而不是“UIView”动画。
我最好通过添加 50 个子视图或 50 个子层来实现这一点吗?这有什么不同吗?
谢谢。
假设我想将 50 张图像添加到视图中,以便为它们设置动画。假设我打算使用核心动画(例如,CABasicAnimation)而不是“UIView”动画。
我最好通过添加 50 个子视图或 50 个子层来实现这一点吗?这有什么不同吗?
谢谢。
正如我在这里所描述的,我在动画中同时使用了 UIViews 和 CALayers,发现它们之间的性能差异可以忽略不计。UIViews 是围绕层的非常轻量级的包装器。此外,您需要的任何基于层的动画都可以轻松应用于 UIView 的支持层。
我在想要创建跨平台(Mac / iOS)UI 元素的情况下直接使用了 CALayers,因为 CALayers 在两个平台上的实现几乎相同(不像 NSViews 和 UIViews 明显不同)。CALayers 没有任何开箱即用的触摸处理例程,但如果需要,您可以添加该功能。
还有一些边缘情况,您可能希望直接使用图层,例如尝试对图层进行有限的 3-D 操作(如在 CoverFlow 效果中)或使用 CAReplicatorLayer 产生粒子效果时。
UIViews 包含子层,因此它们更重,并且包含您可能不需要所有 50 个图像的东西,例如事件和触摸处理程序/变量。因此,与为每个图像使用视图相比,使用层可能会更有效,并且使用更少的内存。
如此少量的图像的差异可以忽略不计。使用最方便的。
我还没有做过动画(还:-),但我记得读过的关于它的东西建议创建一个所有 50 个平铺的图像,然后在绘图时偏移到正确的图像。这样你只需要一层或 UIImage 或其他任何东西来显示它。我不知道速度,但我猜它会节省内存并且可能更容易管理和编码。