在3D中将CATransformLayer渲染为PNG

时间:2014-05-08 01:28:10

标签: ios 3d core-animation render catransformlayer

我试图将包含多个CAShapeLayers的CATransformLayer渲染到png文件中。我知道如何设置基本渲染,这确实有效。

虽然当我在CATransformLayer上调用renderInContext时,它会将所有内容展平为2D并完全忽略我的变换矩阵(旋转和/或透视)。

如何将我的3d CATransformLayer及其所有CAShapeLayers呈现为PNG / UIImage?

1 个答案:

答案 0 :(得分:6)

由于您仅定位iOS7及更高版本,我建议您放弃renderInContext:并将其替换为-[UIView drawViewHierarchyInRect:afterScreenUpdates:]。您的代码可能看起来像这样:

UIGraphicsBeginImageContext(sizeOfYourImage);

[yourViewToRender drawViewHierarchyInRect:(CGRect){0, 0, sizeOfYourImage} afterScreenUpdates:YES];

UIImage *renderedImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();