2010-09-28 26 views
5

Ho creato un CALayer (Ho aggiunto diverse forme al livello, ma alla fine ho un singolo CALayer) e sto avendo MOLTO difficoltà ad aggiungerlo a un CGImage. Ho trovato alcuni riferimenti a [CALayer renderInContext:ctx], ma non sono sicuro di come implementarlo.CGImage (o UIImage) da un CALayer

Qualcuno ha già fatto questo?

risposta

11

Prova questo ...

UIGraphicsBeginImageContext(layer.bounds.size); 
[layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
+0

non thread-safe prima di OS 4.0, bla bla, lalala ... –

+0

ultimi documenti affermano che tutti i 'UIGraphics * funzioni Context' sono thread principale solo (in modo da non sono thread-safe su nessuna versione del sistema operativo). 'CGBitmapContextCreate' è la funzione CoreGraphics sicura per i thread che' UIGraphicsBeginImageContext' è costruita sopra. – rpetrich

+0

Anche dai documenti: Discussione Si dovrebbe chiamare questa funzione solo quando un contesto grafico basato su bitmap è il contesto grafico corrente. Se il contesto corrente è nullo o non è stato creato da una chiamata a UIGraphicsBeginImageContext, questa funzione restituisce nil. – TomH

1

Creare un contesto grafico bitmap e utilizzare renderInContext: per disegnare il livello in esso. Ora hai il livello in un'immagine.

Problemi correlati