将CALayer拆分为子图层以进行动画处理

时间:2011-06-22 01:08:13

标签: core-animation

我想创建一个类似于WWDC2011主题演讲中显示的新Lion Mail.app对话动画的动画效果。

http://www.razorianfly.com/wp-content/uploads/Screen-shot-2011-02-28-at-16.31.48.png

当使用带有静态内容的10个CALayers时,我有一个原型效果(UIImageViews)但是我需要知道如何在运行时这样做。

如何获取图层层次结构并将其拆分为临时子图层以进行动画处理?

1 个答案:

答案 0 :(得分:0)

我在iOS上做的非常相似的事情是创建一个屏幕外位图上下文,使用CALayer调用renderInContext将我的图层渲染到其中,然后使用CGImageCreateWithImageInRect()将生成的图像切片并切成一堆单独的CGImages。然后我将每个图像安装为它运行良好的图层的内容。

Bill Dudney核心动画书有一个名为Confetti的iOS应用程序示例,展示了如何进行切片和切块。

在Mac OS中可能会有一些工作,因为你没有非常方便的UIGraphicsBeginImageContext方法,并且必须使用低级CG调用来创建一个屏幕外的上下文,但它在Quartz的Xcode文档中有记载。在标题为“图形上下文”的部分中。