UIView 动画与 CALayers

我挣扎与概念化动画与 克莱尔相对的 UIView 的自己的动画方法。把“ 核心动画”放进去,好吧,也许有人可以从更高的层次阐述这些概念,这样我就可以更好地想象正在发生什么,以及为什么我想要将 UIView 动画(我现在非常熟悉)迁移到 iPhone 上的 CALayer 动画。Cocoa-Touch 的每个景色都会自动添加一层。而且,它似乎,你可以动画一个 还是另一个? ! ?甚至混合在一起? ! ?但是为什么呢?界限在哪里?两者的优缺点是什么?

核心动画编程指南立即跳转到图层和计时类,我认为需要退一步,了解为什么这些不同的部分存在,以及如何相互关联。

13634 次浏览

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

UIView始终呈现为 CALayer。当使用 UIView方法使视图动画化时,实际上是在操纵基础 CALayer

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

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

  1. 使用 UIView,直到它无法满足您的需要。
  2. 那就去 CoreAnimation 吧,不过在你投入太多之前..。
  3. 如果您编写的动画超过一些,使用 Cocos2D。

使用视图作为控件,使用图层作为视觉效果。图层不接收事件,所以在这些情况下使用视图更容易,但是当你想要动画一个精灵或背景等,图层是有意义的。事件直接通过层传递到后台视图,这样您就可以拥有一个漂亮的可视化表示,而不会搞乱事件。试着覆盖一个仅用于视觉表示的视图,然后必须自己将点击事件传递到底层视图。

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

这听起来像是在暗示 Cocos2D 并不是基于 OpenGL ES 框架,而实际上它是基于 OpenGL ES 框架的。虽然它是一个伟大的2D 游戏引擎,但它确实实现了 OpenGL 的大部分渲染功能——附加到一个物理库,它为动画提供了很多非常有趣的可能性—— Chris 是正确的——它确实少了很多编码。