【发布时间】:2010-11-29 16:12:38
【问题描述】:
我有点困惑何时在 iPhone 或 Mac 上使用 CALayer,何时不使用? CoreAnimation 在我的基于 UIView 的对象上工作得很好,而无需使用 CALayer。什么时候适合深入学习这个课程?
【问题讨论】:
标签: iphone objective-c cocoa cocoa-touch core-animation
我有点困惑何时在 iPhone 或 Mac 上使用 CALayer,何时不使用? CoreAnimation 在我的基于 UIView 的对象上工作得很好,而无需使用 CALayer。什么时候适合深入学习这个课程?
【问题讨论】:
标签: iphone objective-c cocoa cocoa-touch core-animation
在我的基准测试中,UIView 和 CALayer 在 iPhone 上提供了大致相同水平的性能。正如 rpetrich 在他的评论中提到的,UIViews 是 CALayers 的一个薄包装。在 Mac 上,CALayers 比 NSViews 更轻量级。
正如 Ben 所指出的,您可以通过直接使用 CALayers 来超越隐式动画的功能,甚至可以通过 CATransform3D 提供一些 3-D 效果。在许多情况下,您甚至可以通过访问支持层(如果视图是支持层的)来使用标准视图来执行此操作。
另一个问题是跨平台(Mac / iPhone)代码。 My iPhone application 在很大程度上使用全 CALayer 界面作为其主要视图,因为我可以使用完全相同的代码在其 Mac 对应界面中绘制该界面。再举一个例子,我把你引向Core Plot framework,它完全使用 CALayers 来绘制图表,并且可以在 Mac 和 iPhone 上运行。 CALayers 在这两个平台上几乎是一样的,UIView 和 NSView 有非常不同的界面。
【讨论】:
如果您可以使用“隐式动画”(由 UIKit/AppKit 提供而无需深入研究 CA、图层和动画师)做您想做的事,那么一定要走这条路。
当您开始使用更复杂的动画(例如非线性运动或重复效果以及某些同步效果)时,CoreAnimation 就会发挥作用。你可以用它做很多事情,但它是一个相当繁重的工具(具有相称的学习曲线,至少与 UIKit 的东西相比)。
【讨论】: