2010-09-28 7 views
5

J'ai créé un CALayer (j'ai ajouté plusieurs formes à la couche, mais finalement, j'ai un seul CALayer), et j'ai beaucoup de mal à l'ajouter à une CGImage. J'ai trouvé quelques références à [CALayer renderInContext:ctx], mais je ne suis pas sûr de savoir comment l'implémenter.CGImage (ou UIImage) à partir d'un CALayer

Quelqu'un at-il déjà fait cela?

Répondre

11

Try this ...

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

pas thread-safe avant OS 4.0, bla bla, lalala ... –

+0

dernier état docs que tous les 'UIGraphics * fonctions context' sont thread principal uniquement (ils ne sont pas thread-safe sur n'importe quelle version du système d'exploitation). 'CGBitmapContextCreate' est le CoreGraphics thread-safe fonction qui' UIGraphicsBeginImageContext' est construit sur. – rpetrich

+0

également des docs: Discussion Vous devez appeler cette fonction uniquement lorsqu'un contexte graphique de bitmaps est le contexte graphique actuel. Si le contexte actuel est nul ou n'a pas été créée par un appel à UIGraphicsBeginImageContext, cette fonction retourne zéro. – TomH

1

créer un contexte graphique en mode point et utilisent renderInContext: pour dessiner la couche en elle. Vous avez maintenant le calque dans une image.

Questions connexes