我正在尝试将一个UIView层级结构渲染到CGContext或最终的UIImage中。一些子视图具有3D变换,但是renderInContext:
忽略了这些变换以及阴影和一些其他CALayer属性。
来自CALayer.h:
/*
* WARNING: currently this method does not implement the full
* CoreAnimation composition model, use with caution. */
- (void)renderInContext:(CGContextRef)ctx;
在调用UIGraphicsBeginImageContext
之后,我尝试了几种不同的变化。
[self drawRect:[self bounds]];
[self.layer.delegate drawLayer:self.layer inContext:UIGraphicsGetCurrentContext()];
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
[self.layer display];
最好的情况是视图层次结构不使用3D变换进行渲染。最坏的情况是图像为空。我希望最终得到一个有效的alpha通道图像,因此屏幕截图并不能完全解决问题。
有没有一种方法可以在保留所有变换和图层属性的同时呈现UIView层次结构?
如果解决方案涉及递归迭代视图层次结构,分别将每个视图作为图像单独渲染,并在每个父视图的组合步骤中应用所有变换和属性,那么如何应用3D变换?