75

我正在努力用CALayer来概念化动画,而不是UIView自己的动画方法。把“核心动画”扔进去,好吧,也许有人可以从高层次上阐明这些概念,这样我就可以更好地想象正在发生的事情以及为什么我想将 UIView 动画(我现在很熟悉)迁移到 CALayer iPhone 上的动画。Cocoa-Touch 中的每个视图都会自动获得一个图层。而且,您似乎可以为一个和/或另一个设置动画?!?甚至将它们混合在一起?!?但为什么?线路在哪里?每个人的优点/缺点是什么?

核心动画编程指南立即跳转到图层和时序类,我认为需要退后一步,了解这些不同部分存在的原因以及它们之间的关系。

4

5 回答 5

55

使用视图进行控制,使用图层来吸引眼球。图层不接收事件,因此在这些情况下使用视图更容易,但是当您想要为精灵或背景等设置动画时,图层是有意义的。事件直接通过层传递到后台视图,因此您可以获得漂亮的可视化表示,而不会弄乱您的事件。尝试覆盖您仅用于视觉表示的视图,您必须自己将点击事件传递到底层视图。

于 2009-07-26T05:35:35.530 回答
25

AnUIView总是被渲染为 a CALayer。当您使用UIView方法为视图设置动画时,您实际上是在操纵底层的CALayer.

如果您需要做简单的事情,请使用UIView方法。对于更复杂的情况,或者如果您想要不与任何视图关联的图层,请使用CALayers.

于 2009-07-16T20:01:13.497 回答
21

在过去的一年里,我做了很多应用程序。这是我的经验法则:

  1. 使用 UIView 直到它不能做你想做的事情。
  2. 然后转到 CoreAnimation。但在你深入了解它之前......
  3. 如果你写的动画多于几个,请使用 Cocos2D。
于 2009-07-16T20:13:22.693 回答
9

UIView 变换只是 2D 并且仅限于此,但是 LAyer 变换可以是 3D,如果你想做 3D 的东西,你应该使用它们,如果你改变 UIView 变换或 CALayer 变换,UIView 动画将起作用。因此,在基本层面上,当您使用图层而不是视图时,您可以进行更多操作。

于 2009-07-16T19:34:35.377 回答
2

我不确定我是否误解了 Chris 对“Cocos2D 做得更好的地方是什么?那么关于触摸事件处理和 openGL ES 中遗漏的许多其他问题,您没有其他问题吗?”

听起来答案表明 Cocos2D 不是基于 OpenGL ES 框架,而实际上它实际上是基于 OpenGL ES 框架的。虽然它是一个出色的 2D 游戏引擎,但它确实为大部分渲染实现了 OpenGL - 附加到一个物理库,它为动画提供了许多非常有趣的可能性 - 克里斯是正确的 - 它确实少了很多编码。

于 2009-11-15T22:24:48.393 回答