2009-11-16 18 views
6

lo usoCALayer renderInContext

CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity; 
rotationAndPerspectiveTransform.m34 = 1.0/-500; 

Su éxito, pero yo uso "renderInContext: contexto" CGImage obtener a partir del contexto, me encontré con el efecto de imagen no se cambia!

¿Cómo puedo obtener esta imagen de efecto de CALayer?

Respuesta

2

Mi respuesta original sigue a continuación. Era válido en el momento en que lo publiqué, pero Apple ya no permite el uso de UIGetScreenImage. A lo mejor de mi conocimiento después de la puesta en marcha de iOS4 no hay alternativa el modo de hacer capas con transformaciones 3D + se rechazará su aplicación si utiliza UIGetScreenImage



De la documentación para desarrolladores de iPhone en renderInContext:

Además, las capas que utilizan 3D transformaciones no se representan ni son capas que especifican backgroundFilters, filtros, compositingFilter, o una máscara valores.

Así que renderInContext no es la función que necesita para renderizar una capa que tiene una transformación 3D aplicada.

Lo mejor que puede hacer es llamar al: UIGetScreenImage, que básicamente le dará una captura de pantalla y luego podrá extraer la imagen de esta captura de pantalla.

+2

UIGetScreenImage ya no está permitido. Acabo de recibir un correo electrónico de Apple solicitando dejar de usar esta función privada y uso -renderInContext: (en iOs 3.x) o AV Foundation AVCaptureSession y clases relacionadas (en iOS 4). – vfn

+0

Hoy recibí el mismo correo electrónico de Apple y mi caso es similar al suyo. Aparentemente tendremos que despedirnos de todos los usuarios que usen iOS3 o despedirnos de la captura ... ¿algún pensamiento? – SpaceDog

+1

Lo suficientemente gracioso hoy en día, una de mis aplicaciones fue rechazada también por usar UIGetScreenImage() ... Probé en iOS4 pero renderInContext TODAVÍA NO hace transformaciones en 3D, así que ... Honestamente, no sé qué es lo mejor que puedo hacer en este momento –