如何使用CALayer renderInContext
并保留图层的透视变换(m34)
?看起来这个方法假设一个Identity变换。我已经尝试过改变上下文这样的东西,这对于平移,旋转和缩放来说很好,但似乎没有办法保持3D变换的视角。
提出这个问题可能是一个更好的方法:如何在绘制CGContextRef时应用透视图?
答案 0 :(得分:5)
您可能希望了解自iOS 7.0以来提供的方法drawViewHierarchyInRect:afterScreenUpdates:
。将该方法应用于包含CALayers的视图将保持其3D变换。
示例代码:
BOOL opaqueBackground = YES;
UIGraphicsBeginImageContextWithOptions(theViewContainingYourCALayers.bounds.size, !opaqueBackground, 0);
[theViewContainingYourCALayers drawViewHierarchyInRect:theViewContainingYourCALayers.bounds afterScreenUpdates:YES];
[UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
正如马特所指出的那样,完全依赖于renderInContext:
是不可能的,因为它无视除了仿射之外的任何转变。
迟到的答案,但我希望它仍有帮助。