cocoa core-graphics calayer cglayer

cocoa - ¿Cuál es la diferencia y la compatibilidad de CGLayer y CALayer?



core-graphics (1)

Estoy confundiendo a CGLayer y CALayer . Se ven similares, ¿por qué hay implementaciones separadas? ¿Cuál es la diferencia y la compatibilidad de CGLayer y CALayer ?


Son completamente diferentes y no compatibles.

Para ser absolutamente claro:

es estrictamente una coincidencia que la palabra "capa" se use en ambos nombres ; Ellos no tienen ninguna relación .

Los CGLayers son una cosa "especial" de "alto rendimiento".

Podrías considerarlos "como mapas de bits, pero mejores".

Apple se sentó y dijo: "Estamos cansados ​​de que las personas usen mapas de bits, ¡hagamos algo mejor!" :-)

De hecho, solo trabajas con CGLayers fuera de pantalla .

Para repetir, CGLayers se usan completamente fuera de pantalla.

Una vez que estén listos, puede dispararlos a su pantalla real (es decir: enviarlos a uno de sus puntos de vista).

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

Por el contrario ... CALayers son simplemente las cosas "en" puntos de vista. CALayers son solo cómo funcionan las vistas.

Entonces los dos conceptos son totalmente diferentes.

CALayers son solo las cosas "en" vistas. En contraste, los CGLayers son la maquinaria de cálculo "fuera de pantalla, de alto rendimiento y fresca" de Apple.

Para que quede claro, CGLayers no tiene absolutamente ninguna conexión con las vistas ni asociación con las vistas. (Claro, puedes pegar un CGLayer en una vista, pero luego puedes pegar "tipografía" o "una imagen" en una vista. La tipografía y las imágenes no son vistas, y los CGLayers no son vistas).

El ejemplo típico es este:

desea dibujar algo complicado una vez, y luego dibujarlo muchas veces en la pantalla. La respuesta a ese problema es exactamente CGLayers. Su "área de trabajo" sería un CGLayer; luego puede activarlo en una impresora, en la pantalla o lo que sea.

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

un buen nombre sería "CGCalculationSpace".

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

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

No hay conexión, en absoluto. Es realmente confuso que las letras "capa" se usen en el nombre, ¡es una pena!

Los CGLayers deberían llamarse quizás "espacios de trabajo" o "paradigmas de cálculo" o algo así.

Espero que ayude y espero que todavía estés leyendo!