Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIView动画vs CALayers_Ios_Core Animation_Calayer_Uiviewanimation_Caanimation - Fatal编程技术网

Ios UIView动画vs CALayers

Ios UIView动画vs CALayers,ios,core-animation,calayer,uiviewanimation,caanimation,Ios,Core Animation,Calayer,Uiviewanimation,Caanimation,我正在努力用CALayer来概念化动画,而不是UIView自己的动画方法。将“核心动画””加入其中,也许有人可以从较高的层次阐述这些概念,这样我就可以更好地想象发生了什么,以及为什么我想将UIView动画(我现在非常熟悉)迁移到iPhone上的CALayer动画。Cocoa Touch中的每个视图都会自动获得一个层。而且,看起来,你可以设置一个和/或另一个的动画?!?甚至把它们混在一起?!?但是为什么呢?电话线在哪里?每个人的优点/缺点是什么 核心动画编程指南立即跳转到图层和计时类,我认为需要退

我正在努力用CALayer来概念化动画,而不是UIView自己的动画方法。将“核心动画””加入其中,也许有人可以从较高的层次阐述这些概念,这样我就可以更好地想象发生了什么,以及为什么我想将UIView动画(我现在非常熟悉)迁移到iPhone上的CALayer动画。Cocoa Touch中的每个视图都会自动获得一个层。而且,看起来,你可以设置一个和/或另一个的动画?!?甚至把它们混在一起?!?但是为什么呢?电话线在哪里?每个人的优点/缺点是什么


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

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

一个
ui视图
总是呈现给
CALayer
。使用
UIView
方法设置视图动画时,可以有效地操纵底层
CALayer


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

我在过去一年中已经开发了一系列应用程序。以下是我的经验法则:

  • 使用UIView,直到它无法执行您想要的操作
  • 然后移动到CoreAnimation。但在你太投入之前
  • 如果您编写了多个动画,请使用Cocos2D
    使用视图作为控件,使用图层作为吸引眼球的对象。层不接收事件,因此在这些情况下更容易使用视图,但当您想要为精灵或背景等设置动画时,层是有意义的。事件直接通过层传递到备份视图,这样您就可以拥有一个非常直观的表示,而不会弄乱事件。尝试覆盖仅用于视觉表示的视图,您必须自己将点击事件传递到基础视图。

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


    听起来答案似乎表明Cocos2D并不是基于OpenGL ES框架的,而事实上它是基于OpenGL ES框架的。虽然它是一个很棒的2D游戏引擎,但它确实实现了OpenGL的大部分渲染功能-连接到一个物理库,它允许很多非常有趣的动画可能性-克里斯是正确的-它的编码少了很多确实如此。

    Cocos2D做得更好的是什么?那么,关于触摸事件处理和openGL ES中遗漏的许多其他内容,你没有其他问题吗?Cocos2D添加了许多方便的方法,因此代码更加紧凑。它们有一些很棒的内置效果。简言之,如果你在做大量动画,你将编写更少的代码如果你使用Cocos2D,它比OpenGL ES或Core动画都好。它们有自己的触摸处理方法,所以这根本不是问题。我的建议是,除非你正在编写游戏,否则不要使用Cocos2D。我认为这确实是它的最佳使用情况。不过,我同意,你应该尽可能长时间地使用UIView动画,以及其他用途使用CoreAnimation。这是一个很好的通用问题,所有答案都很好。我在这个帖子上投票给了所有人。这个问题很好。有人知道制作UIView CALayer动画的最佳实践吗?在我的示例中,我需要一个3D效果,我发现制作层动画会导致UIView的“帧”与图层(所以对于一个按钮,点击将不再匹配)。这是一个很好的答案。谢谢!