Quelle est la différence et la compatibilité des CGLayer et CALayer?
-
10-10-2019 - |
Question
Je suis confus CGLayer
et CALayer
. Ils se ressemblent, alors pourquoi y at-il des implémentations séparées? Quelle est la différence entre, et la compatibilité des, CGLayer
et CALayer
?
La solution
Ils sont complètement différents et non compatibles.
Pour être tout à fait clair:
strictement une coïncidence que le mot "couche" est utilisé dans les deux noms ; ils sont sans aucun rapport .
CGLayers sont un haut "spécial" "performance" thingy.
Vous pouvez les considérer "comme bitmaps, mais mieux."
Apple est assis et dit: « Nous sommes malades de personnes qui utilisent bitmaps, nous allons faire quelque chose de mieux! » : -)
En effet, vous ne travailler avec CGLayers offscreen .
Pour répéter, CGLayers sont entièrement utilisés offscreen.
Une fois qu'ils sont prêts, vous pouvez alors leur souffle sur votre écran réel (c'est-à-dire: leur souffle à l'un de vos points de vue).
( Cependant : A noter que: 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'image ou des calculs mathématiques Dans ce cas, , CGLayers ne sont jamais vu à l'écran, et ils ont tout à fait aucun lien avec le monde à l'écran.)
En revanche ... CALayers sont tout simplement les choses "dans" vues. CALayers sont à quel point le travail de vues.
Ainsi, les deux concepts sont totalement différents.
CALayers ne sont que les choses « dans » vues. CGLayers de contraste sont la fraîcheur d'Apple "offscreen, haute performance, les machines de calcul".
Pour être clair, CGLayers ont tout à fait aucun lien avec des vues, et aucune association avec des vues. (Bien sûr, vous pouvez coller un CGLayer pour une vue, mais, vous pouvez coller dire « typographie » ou « une image » pour une vue. Typographie et les images ne sont pas vues, et CGLayers ne sont pas vues.)
L'exemple typique est la suivante:
vous voulez dessiner quelque chose de compliqué une fois, puis tirer cette chose plusieurs fois à l'écran. La réponse à ce problème est exactement CGLayers. Votre « espace de travail » serait un CGLayer; vous pourriez alors blit sur une imprimante, à l'écran, ou autre.
Pour être clair, à mon avis d'Apple aurait choisi un autre nom ...
un bon nom serait "CGCalculationSpace".
Le fait que le nom contient le mot « couche » vous fait penser à NSLayers.
Pour répéter: il n'y a absolument aucune relation, quelle qu'elle soit, de quelque façon. CGLayers ne sont même pas vaguement liés aux couches.
Il n'y a pas de connexion, du tout. Il est vraiment déroutant que les lettres « l a y e r » sont utilisés dans le nom - c'est dommage !!
CGLayers devraient être appelés « espaces de travail peut-être » ou « paradigmes de calcul » ou quelque chose comme ça.
espère que cela aide et nous espérons que vous lisez encore!