2010-09-28 19 views
5

Stworzyłem CALayer (dodałem kilka kształtów do warstwy, ale ostatecznie mam jedną CALayer) i mam Mnóstwo problemów z dodaniem go do CGImage. Znalazłem kilka odniesień do [CALayer renderInContext:ctx], ale nie jestem pewien, jak go wdrożyć.CGImage (lub UIImage) z CALayera

Czy ktoś to wcześniej zrobił?

Odpowiedz

11

Spróbuj tego ...

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

nie bezpieczny wątku przed OS 4.0, bla bla, lalala ... –

+0

Najnowsze docs państwa, że ​​wszystkie funkcje * 'UIGraphics Context' są tylko główny wątek (tak oni nie są bezpieczne dla wątków w żadnej wersji systemu operacyjnego). 'CGBitmapContextCreate' to bezpieczna dla wątków funkcja CoreGraphics, na której zbudowana jest' UIGraphicsBeginImageContext'. – rpetrich

+0

Również z dokumentów: Dyskusja Powinieneś wywołać tę funkcję tylko wtedy, gdy kontekst graficzny oparty na bitmapie jest bieżącym kontekstem graficznym. Jeśli bieżący kontekst jest zerowy lub nie został utworzony przez wywołanie UIGraphicsBeginImageContext, ta funkcja zwraca zero. – TomH

1

Utwórz kontekst graficzny bitmapy i użyj renderInContext:, aby narysować w nim warstwę. Teraz masz warstwę na obrazku.