2009-11-16 11 views
6

Io usoCALayer renderInContext

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

E 'successo, ma io uso "renderInContext: contesto" ottenere CGImage dal contesto, ho trovato l'effetto di immagine non è cambiato!

Come posso ottenere questo effetto immagine da CALayer?

risposta

2

La mia risposta originale segue sotto. Era valido al momento in cui l'ho pubblicato, ma Apple non consente più l'uso di UIGetScreenImage. Al meglio della mia conoscenza dopo il lancio del iOS4 non c'è alternativa come rendere i livelli con le trasformazioni 3D + la vostra applicazione sarà respinta se si utilizza UIGetScreenImage



Dalla documentazione per sviluppatori iPhone su renderInContext:

Inoltre, livelli che utilizzano 3D trasformate non sono rese, né sono strati che specificano backgroundFilters, filtri, compositingFilter o una maschera valori.

Quindi renderInContext non è la funzione che è necessario utilizzare per eseguire il rendering di un livello a cui è applicata una trasformazione 3D.

Il meglio che puoi fare è chiamare: UIGetScreenImage, che in sostanza ti darà uno screenshot e potrai quindi estrarre l'immagine da questo screenshot.

+2

UIGetScreenImage non è più consentito. Ho appena ricevuto un'email da Apple chiedendo di interrompere l'uso di questa funzione privata e utilizzare -renderInContext: (su iOs 3.x) o AV Foundation AVCaptureSession e classi correlate (su iOS 4). – vfn

+0

Ho ricevuto oggi la stessa email da Apple e il mio caso è simile al tuo. A quanto pare dovremo salutare tutti gli utenti usando iOS3 o dare il bacio alla cattura ... qualche idea? – SpaceDog

+1

Abbastanza divertente oggi una delle mie app è stata rifiutata anche per l'utilizzo di UIGetScreenImage() ... Ho provato su iOS4 ma renderInContext ANCORA NON rende le trasformazioni 3D, quindi .. Onestamente non so qual è la cosa migliore da fare adesso –

Problemi correlati