¿Cómo utilizo CALayer renderInContext y mantengo la perspectiva transformada?

¿Cómo utilizo CALayer renderInContext y tengo la perspectiva transformada (m34) de la capa conservada? Parece que este método asume una transformación de Identidad. He intentado cosas como la transformación del context, y esto está bien para la traducción, la rotation y la escala, pero no parece haber una forma de mantener la perspectiva de la transformación 3D.

Tal vez sea una mejor manera de plantear esta pregunta: ¿Cómo aplico una perspectiva al dibujar en un CGContextRef?

Es posible que desee echar un vistazo al método drawViewHierarchyInRect:afterScreenUpdates: que se ofrece desde iOS 7.0. Al aplicar el método a la vista que contiene los CALayers se mantendrán sus transformaciones en 3D.

Código de muestra:

 BOOL opaqueBackground = YES; UIGraphicsBeginImageContextWithOptions(theViewContainingYourCALayers.bounds.size, !opaqueBackground, 0); [theViewContainingYourCALayers drawViewHierarchyInRect:theViewContainingYourCALayers.bounds afterScreenUpdates:YES]; [UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); 

Como señaló renderInContext: , confiar únicamente en renderInContext: no es posible ya que ignora cualquier transformación que no sea afín.

Última respuesta, pero espero que siga ayudando.