Pregunta

Me estoy confundiendo CGLayer y CALayer. Se ven similares, por lo que ¿por qué hay implementaciones separadas? ¿Cuál es la diferencia entre, y la compatibilidad de, CGLayer y CALayer?

¿Fue útil?

Solución

Son completamente diferentes y no compatibles.

Para ser absolutamente claro:

es estrictamente una coincidencia que la palabra "capa" se utiliza en ambos nombres ; que son completamente ajenos .

CGLayers son un "especial" "alto rendimiento" cosita.

Se podría considerarlos "como mapas de bits, pero mejor."

Apple se sentó y dijo: "Estamos hartos de personas que utilizan los mapas de bits, vamos a hacer algo mejor!" : -)

De hecho, sólo trabajo con CGLayers fuera de pantalla .

Para repetir, CGLayers se utilizan por completo fuera de la pantalla.

Una vez que estén listos, se puede luego la explosión de ellos a la pantalla real (es decir: la explosión de ellos en una de sus visitas).

( Sin embargo : Tenga en cuenta que: CGLayers se utilizan a menudo "solos" Cuando digo que se utilizan "solo", me refiero a que se utilizan para:. Procesamiento de imágenes o cálculos matemáticos En ese caso , CGLayers nunca se ven en pantalla, y no tienen absolutamente ninguna conexión con el mundo en pantalla.)

En contraste ... CALayers son simplemente las cosas "en" puntos de vista. CALayers son sólo la forma en vistas de trabajo.

Así que los dos conceptos son totalmente diferentes.

CALayers son sólo las cosas "en" puntos de vista. En contraste CGLayers son frescas de Apple "fuera de la pantalla, de alto rendimiento, máquinas de cálculo."

Para ser claros, CGLayers tienen absolutamente ninguna conexión con puntos de vista, y ninguna asociación con vistas. (Claro, usted podría pegar un CGLayer a una vista, pero a continuación, se puede pegar a decir "tipografía" o "una imagen" a una vista. La tipografía y las imágenes no son vistas, y CGLayers no son vistas.)

El ejemplo típico es el siguiente:

que quiere dibujar algo complicado una vez, y luego dibujar lo que muchas veces en la pantalla. La respuesta a este problema es exactamente CGLayers. Su "área de trabajo" sería un CGLayer; usted podría entonces blit en una impresora, en la pantalla, o lo que sea.

Para que quede claro, en mi opinión de Apple debería haber elegido un nombre diferente ...

un nombre bueno sería "CGCalculationSpace."

El hecho de que el nombre contiene la palabra "capa", hace pensar en NSLayers.

Para repetir: no hay absolutamente ninguna relación, en absoluto, de ninguna manera. CGLayers no están ni siquiera vagamente relacionadas con capas.

No hay ninguna conexión, en absoluto. Realmente es confuso que las letras "l a y e r" se utilizan en el nombre - es una pena !!

CGLayers deberían llamarse tal vez "espacios de trabajo" o "paradigmas de cálculo" o algo por el estilo.

Espero que ayuda y espero que todavía está leyendo!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top