Quelle est la différence et la compatibilité de CGLayer et de CALayer?

Je CGLayer et CALayer . Ils ont une apparence similaire, alors pourquoi y a-t-il des implémentations séparées? Quelle est la différence et la compatibilité de CGLayer et de CALayer ?

Ils sont complètement différents et incompatibles.

Pour être absolument clair:

c’est ssortingctement une coïncidence que le mot “couche” soit utilisé dans les deux noms ; ils sont complètement indépendants .

Les CGLayers sont un truc “spécial” “haute performance”.

Vous pourriez les considérer “comme des bitmaps, mais mieux”.

Apple s’est assis et a dit “Nous en avons marre des gens utilisant des bitmaps, faisons quelque chose de mieux!” 🙂

En effet, vous travaillez uniquement avec CGLayers hors écran .

Pour répéter, les CGLayers sont entièrement utilisés hors écran.

Une fois qu’elles sont prêtes, vous pouvez les afficher sur votre écran (c’est-à-dire: faites-les exploser sur l’une de vos vues).

( Cependant, notez que: les CGLayers sont souvent utilisés “seuls”. Quand je dis qu’ils sont utilisés “seuls”, je veux dire qu’ils sont utilisés pour: traitement d’images ou calculs mathématiques. Dans ce cas, les CGLayers ne sont jamais visibles à l’écran. absolument aucune connexion au monde à l’écran.)

En revanche … CALayers sont simplement les choses “in” vues. Les CALayers ne sont que des points de vue.

Les deux concepts sont donc totalement différents.

Les calayers ne sont que les choses “dans” les vues. À l’opposé, les CGLayers sont les «machines de calcul hors écran, à haut rendement et de haute performance» d’Apple.

Pour être clair, les CGLayers n’ont absolument aucun lien avec les vues, et aucune association avec les vues. (Bien sûr, vous pouvez coller un CGLayer dans une vue, mais vous pouvez ensuite coller “typographie” ou “une image” dans une vue. La typographie et les images ne sont pas des vues et les CGLayers ne sont pas des vues.)

L’exemple typique est le suivant:

vous voulez dessiner quelque chose de compliqué une fois et ensuite dessiner cette chose plusieurs fois à l’écran. La réponse à ce problème est exactement CGLayers. Votre “zone de travail” serait un CGLayer; vous pouvez ensuite le rendre sur une imprimante, sur l’écran ou autre.

Pour être clair, à mon avis, Apple aurait dû choisir un autre nom

un bon nom serait “CGCalculationSpace”.

Le fait que le nom contienne le mot “layer” vous fait penser à NSLayers.

Répéter: il n’y a absolument aucune relation, de quelque manière que ce soit. Les CGLayers ne sont même pas vaguement liés aux calques.

Il n’y a pas de connexion du tout. Il est vraiment déroutant que les lettres “layer” soient utilisées dans le nom – c’est dommage !!

Les CGLayers devraient être appelés “workspaces” ou “paradigms de calcul” ou quelque chose comme ça.

J’espère que ça aide et j’espère que vous lisez encore!