创建可为视图提供曲率感的CA动画的最佳方法是什么?
我最初的方法是创建一个CALayers网格,每个网格都有一个独特的转换矩阵(我对OpenGL有一些经验,这就是我对GL的看法).要做到这一点,我需要将视图分成几个四边形(每个由CALayer表示).问题是,我该怎么做.只需在动画开始时拍摄视图的快照并使用直到动画完成(如转换可以),但我不知道如何拍摄这样的快照.
任何指针(尤其是代码示例的链接)都具有金色价值:)
最佳答案 经典答案:
我认为你可能正在寻找的是CALayer的renderInContext:.每个UIView都有一个CALayer,您可以通过layer财产获得.因此,您可以构建所需的CGContext(可能是位图上下文),让视图层将视图绘制到上下文中,然后根据需要对该数据执行任何操作,无论是将其划分为一堆UIImages还是因此UIImageViews用于CoreAnimation效果,将其上传到OpenGL或其他任何东西.
示例代码由Apple在Q&A 1703直接提供,它使用UIKit CoreGraphics扩展直接跳转到UIImage并挖掘所有可用窗口以捕获整个屏幕的图像.但它向你展示了事物的本质.
2015年更新:
从iOS 7开始,如Q&A 1817所述,UIView提供了-drawViewHierarchyInRect:afterScreenUpdates:它减少了将视图进一步快照所需的代码 – 在Apple的示例代码中减少了四行.看来Q& A 1703已被撤销,因为苹果方面已不再提供;上面的链接是外部存档副本.所以1817年的建议就是要遵循的东西.