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?

Était-ce utile?

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!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top