UIView动画与CALayers

时间:2009-07-16 19:20:17

标签: ios core-animation calayer uiviewanimation caanimation

我正在努力用 CALayer 概念化动画,而不是 UIView的自己的动画方法。把“核心动画”扔进去,好吧,也许有人可以从高层次上清楚地表达这些概念,这样我就可以更好地想象发生了什么以及为什么我想要迁移UIView动画(我是现在非常熟悉)对iPhone上的CALayer动画。 Cocoa-Touch中的每个视图都会自动获取一个图层。而且,似乎你可以为一个和/或另一个制作动画?!甚至将它们混合在一起?!?但为什么?线路在哪里?每个人的赞成/赞成是什么?

核心动画编程指南立即跳转到Layer&时间类我认为需要退后一步,理解为什么这些不同的部分存在以及彼此之间的关系。

5 个答案:

答案 0 :(得分:54)

使用视图控制和图层糖果。图层不接收事件,因此对于这些情况使用视图更容易,但是当您想要为精灵或背景等设置动画时,图层是有意义的。事件直接通过图层传递到支持视图,因此您可以拥有非常直观的表示,而不会弄乱您的事件。尝试覆盖您刚刚用于视觉表示的视图,并且您必须自己将点击事件传递到底层视图。

答案 1 :(得分:25)

UIView总是呈现给CALayer。当您使用UIView方法为视图设置动画时,您实际上在操纵基础CALayer

如果您需要做一些简单的事情,请使用UIView方法。对于更复杂的情境,或者您希望图层与特定视图无关,请使用CALayers

答案 2 :(得分:21)

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

  1. 使用UIView,直到它没有按照你想要的那样做。
  2. 然后转到CoreAnimation。但在你进入太多之前......
  3. 如果您编写的动画不止一些,请使用Cocos2D。

答案 3 :(得分:9)

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

答案 4 :(得分:2)

我不确定我是否误解了克里斯对“Cocos2D做得更好的回应?那么,关于触摸事件处理和许多其他缺少openGL ES的东西,你不会遇到其他问题吗?”

听起来好像答案表明Cocos2D并非基于OpenGL ES框架,实际上它实际上是。虽然它是一个伟大的2D游戏引擎,它确实实现了OpenGL的大部分渲染 - 附加到物理库,它允许动画的许多非常有趣的可能性 - 而且Chris是正确的 - 它的编码确实少得多。