我正在努力用 CALayer 概念化动画,而不是 UIView的自己的动画方法。把“核心动画”扔进去,好吧,也许有人可以从高层次上清楚地表达这些概念,这样我就可以更好地想象发生了什么以及为什么我想要迁移UIView动画(我是现在非常熟悉)对iPhone上的CALayer动画。 Cocoa-Touch中的每个视图都会自动获取一个图层。而且,似乎你可以为一个和/或另一个制作动画?!甚至将它们混合在一起?!?但为什么?线路在哪里?每个人的赞成/赞成是什么?
核心动画编程指南立即跳转到Layer&时间类我认为需要退后一步,理解为什么这些不同的部分存在以及彼此之间的关系。
答案 0 :(得分:54)
使用视图控制和图层糖果。图层不接收事件,因此对于这些情况使用视图更容易,但是当您想要为精灵或背景等设置动画时,图层是有意义的。事件直接通过图层传递到支持视图,因此您可以拥有非常直观的表示,而不会弄乱您的事件。尝试覆盖您刚刚用于视觉表示的视图,并且您必须自己将点击事件传递到底层视图。
答案 1 :(得分:25)
UIView
总是呈现给CALayer
。当您使用UIView
方法为视图设置动画时,您实际上在操纵基础CALayer
。
如果您需要做一些简单的事情,请使用UIView
方法。对于更复杂的情境,或者您希望图层与特定视图无关,请使用CALayers
。
答案 2 :(得分:21)
我在过去一年里做了很多应用程序。这是我的经验法则:
答案 3 :(得分:9)
UIView变换只是2D并且仅限于此,LAyer变换然而可以是3D,如果你想做3D东西你应该使用它们,如果你改变UIView变换或CALayer变换,UIView动画将起作用。因此,在基本级别,当您使用Layer而不是View时,可以进行更多操作。
答案 4 :(得分:2)
我不确定我是否误解了克里斯对“Cocos2D做得更好的回应?那么,关于触摸事件处理和许多其他缺少openGL ES的东西,你不会遇到其他问题吗?”
听起来好像答案表明Cocos2D并非基于OpenGL ES框架,实际上它实际上是。虽然它是一个伟大的2D游戏引擎,它确实实现了OpenGL的大部分渲染 - 附加到物理库,它允许动画的许多非常有趣的可能性 - 而且Chris是正确的 - 它的编码确实少得多。