ios core-animation calayer quartz-core careplicatorlayer

ios - ¿Cuál es la magia detrás de CAReplicatorLayer?



core-animation calayer (1)

Los CALayers de propósito especial como CAReplicatorLayer o CAGradientLayer pueden (a través de las API privadas) ejecutar su dibujo directamente en la GPU mediante un rápido llenado o copia. En cierto sentido, son diferentes, de modo que el almacén de respaldo no está en la RAM normal, sino directamente en la GPU.

Lo que me parece interesante con CAReplicatorLayer:

  • Es capaz de mostrar un CALayer varias veces con diferentes transformaciones de manera muy eficiente (¿cómo?)
  • Parece que de alguna manera reutiliza el "almacén de respaldo" para la capa replicada e incluso le aplica algunos tonos de color (¿cómo?)

Me gustaría obtener el código fuente u obtener algún conocimiento de la magia detrás de CAReplicatorLayer. Me gustaría tener una clase CALayer similar a CAReplicatorLayer, pero con más control. Me gustaría tener el control de la transformación individualmente para cada instancia replicada .

Así que pregunte de una manera totalmente diferente: ¿es posible obtener el "almacén de respaldo" para un CALayer y mostrarlo como quiera tantas veces como quiera?

(por "tienda de respaldo" me refiero a la textura renderizada para CALayer / UIView. No sé mucho sobre lo que está sucediendo bajo los capítulos de CoreAnimation / QuartzCore).

Por qué no estoy buscando alternativas como, por ejemplo, renderizar el CALayer a un UIImage:

  • Actuación
  • El contenido es dinámico / cambia con bastante frecuencia en las transiciones
  • ¡Sería increiblemente increíble hacerlo de la otra manera!