2012-12-12 12 views
16

Co znajdę ciekawego z CAReplicatorLayer:Jaka jest magia za CAReplicatorLayer?

  • Jest w stanie bardzo skutecznie wyświetlać CALayer wiele razy z różnych przekształceń (Jak)
  • Wydaje się, że w jakiś sposób ponownie wykorzystuje „sklep podkład” dla replikowane warstwa, a nawet zastosuj do niej kilka odcieni kolorów (jak?)

Chciałbym dostać się do kodu źródłowego lub zdobyć wiedzę na temat magii za CAReplicatorLayer. Chciałbym mieć klasę CALayer podobną do klasy CAReplicatorLayer, ale z większą kontrolą. Chciałbym mieć kontrolę nad transformacją indywidualnie dla każdej replikowanej instancji.

Tak zadałem w zupełnie inny sposób: Czy możliwe jest uzyskanie "zaplecza" dla CALayera i wyświetlenie go tak, jak chcę, ile razy chcę?

(przez "backing store" rozumiem renderowanie tekstury dla CALayer/UIView.Nie wiem zbyt wiele o tym, co dzieje się pod maskami CoreAnimation/QuartzCore).


Dlaczego nie patrzę na alternatywy jak np. renderowanie CALayer do UIImage:

  • Wydajność
  • zawartość jest dynamiczna/zmieniając dość często pod przejściami
  • Byłoby niesamowite ręce w dół, aby zrobić to w inny sposób!
+2

Sam się nad tym zastanawiałem. Mam nadzieję, że ktoś mądrzejszy od nas przychodzi haha. –

Odpowiedz

8

CALayery specjalnego przeznaczenia, takie jak CAReplicatorLayer lub CAGradientLayer, mogą (za pośrednictwem prywatnych interfejsów API) wykonywać swoje rysunki bezpośrednio na GPU za pomocą szybkiego wypełniania lub kopiowania. W pewnym sensie są one różne, tak że magazyn zaplecza nie znajduje się w normalnej pamięci RAM, ale bezpośrednio na GPU.

+0

Dzięki za odpowiedź. To nie brzmi obiecująco na to, co miałem nadzieję zrobić, ale rzeczywiście wyjaśnia pewne aspekty. :) – hfossli

+0

zawsze można użyć EAGLLayer i narysować na tym z OpenGL z shaderów. Byłby to szybki sposób tworzenia niestandardowego rysunku. – Cocoanetics

+0

Przypuszczam, że nie mogę tego zrobić poparte UIViews? Lub w moim przypadku: robię coś tak odważnego jak replikowanie UIWebView. Chciałbym bardzo lubić coś podobnego do CAReplicatorLayer, ale z kontrolą nad każdą pojedynczą instancją "transformacja (zamiast przyrostowej jednej oferty CAReplicatorLayer). Jeśli OpenGL/EAGLLayer oferuje, że byłbym bardziej niż szczęśliwy. – hfossli

Powiązane problemy