2009-06-14 10 views
8

Zastanawiam się, jaki jest najbardziej efektywny sposób, aby utworzyć CALayer z obrazem w nim.Najbardziej skuteczny sposób tworzenia CALayer z obrazem w nim?

Wiem, że możesz załadować UIImage, a następnie wywołać [image CGImage], ale czy jest to najlepszy sposób, aby o tym poradzić? O ile mogę powiedzieć z dokumentacji firmy Apple, jest to jedyny sposób, w jaki możesz to zrobić.

Odpowiedz

2

Cóż, CGImage nie jest CALayer, więc są oczywiście pozostawiając pewne kroki tam, ale zakładam, że wiesz co mówisz, jeśli chodzi o rysunek do CALayer lub etażerka.

Jeśli pytanie o stworzenie CGImage s bez używania UIImage, można spróbować patrząc na następujące funkcje:

  • CGImageCreateWithJPEGDataProvider
  • CGImageCreateWithPNGDataProvider

Jeśli zdarzy się wiedzieć wcześniej co rodzaj obrazu, po prostu użyj odpowiedniej metody. W przeciwnym razie musisz sprawdzić podpis pliku, aby zobaczyć, czy zawiera on PNG lub JFIF. Oczywiście wymaga to wdrożenia CGDataProvider.

Zakładam, że właśnie to robi klasa UIImage. Jeśli chcesz, aby wycisnąć co nieco sprawność z tym, można użyć jednej z następujących metod w klasie UIImage:

+ (UIImage *)imageWithContentsOfFile:(NSString *)path 
+ (UIImage *)imageWithData:(NSData *)data 

Jedyna różnica między tymi metodami i

+ (UIImage *)imageNamed:(NSString *)name 

że imageNamed: buforuje obraz. Jeśli używasz jednej z pierwszych metod, nie działa.

+0

Dzięki za to. CGImageCreateWithJPEGDataProvider i CGImageCreateWithPNGDataProvider były dokładnie tym, czego szukałem. –

17

Spróbuj tego:

layer.contents = (__bridge id)[ uiimage CGImage ] ; 

HTH