2012-12-12 14 views
16

Quello che trovo interessante con CAReplicatorLayer:Qual è la magia dietro CAReplicatorLayer?

  • E 'in grado di visualizzare un CALayer più volte con diversi trasforma in modo molto efficiente (? Come)
  • Sembra che riutilizza in qualche modo il "backing store" per il replicato strato e anche applicare alcune sfumature di colore ad esso (come?)

Mi piacerebbe avere le mani sul codice sorgente o ottenere una conoscenza della magia dietro CAReplicatorLayer. Mi piacerebbe avere una classe CALayer simile a CAReplicatorLayer, ma con più controllo. Mi piacerebbe che abbia il controllo sulla trasformazione singolarmente per ciascuna istanza replicata.

Così chiesto in un modo completamente diverso: è possibile ottenere il "backing store" per un CALayer e visualizzarlo tuttavia voglio tutte le volte che voglio?

("backing store" intendo la texture renderizzata per il CALayer/UIView. Non so molto su cosa stia succedendo sotto i cofani di CoreAnimation/QuartzCore).


Perché non sto guardando alternative come ad es. rendendo il CALayer ad un UIImage:

  • prestazioni
  • contenuti è dinamica/cambiare abbastanza spesso sotto le transizioni
  • Sarebbe giù le mani impressionante di fare il contrario!
+2

Lo stavo chiedendo da solo. Spero che qualcuno più intelligente di noi arrivi lungo ahah. –

risposta

8

I CALayer di tipo speciale come CAReplicatorLayer o CAGradientLayer sono in grado (tramite API private) di eseguire il loro disegno direttamente sulla GPU mediante riempimento rapido o copia. In un certo senso sono diversi in modo tale che il backing store non è nella RAM normale, ma direttamente sulla GPU.

+0

Grazie per la risposta. Ciò non sembra promettente per quello che speravo di fare, ma in effetti chiarisce alcuni aspetti. :) – hfossli

+0

puoi sempre usare un EAGLLayer e attingere a ciò con OpenGL con shader. Questo sarebbe il modo digiuno per fare disegni personalizzati. – Cocoanetics

+0

Suppongo che non posso farlo supportato da UIViews? O nel mio caso: sto facendo qualcosa di audace come replicare un UIWebView. Mi piacerebbe molto qualcosa di simile a CAReplicatorLayer, ma con il controllo sulla trasformazione di ogni singola istanza (invece di quella incrementale offerta da CAReplicatorLayer). Se OpenGL/EAGLLayer offre che sarei più che felice. – hfossli

Problemi correlati