将CALayer分成用于动画的子层

问题描述

| 我想创建类似于WWDC2011主题演讲中显示的新Lion Mail.app对话动画的动画效果。 http://www.razorianfly.com/wp-content/uploads/Screen-shot-2011-02-28-at-16.31.48.png 当使用具有静态内容(UIImageViews)的10个CALayers时,我有一个原型效果工作,但是我需要知道如何在运行时执行此操作。 如何采用图层层次结构并将其拆分为临时子图层进行动画处理?     

解决方法

        对于iOS上非常相似的事情,我要做的是创建一个屏幕外的位图上下文,使用CALayer调用renderInContext将图层渲染到该图层中,然后使用CGImageCreateWithImageInRect()将生成的图像切片并切成一堆单独的CGImage。然后,我将每个图像安装为一个效果很好的图层的内容。 Bill Dudney核心动画书中有一个名为Confetti的示例iOS应用程序,该示例显示了如何进行切片和切块。 由于您没有非常方便的UIGraphicsBeginImageContext方法,因此在Mac OS中需要做更多的工作,并且必须使用低级CG调用来创建屏幕外上下文,但这在Xcode文档中有所记录。标题为“图形上下文”的部分中的Quartz。