Ich bin verwirrend CGLayer
und CALayer
. Sie sehen ähnlich aus, warum gibt es dann separate Implementierungen? Was ist der Unterschied zwischen und Kompatibilität von, CGLayer
und CALayer
?Was ist der Unterschied und die Kompatibilität von CGLayer und CALayer?
Antwort
Sie sind völlig unterschiedlich und nicht kompatibel.
Um ganz klar zu sagen:
es ist streng Zufall, dass das Wort „Schicht“ in beiden Namen verwendet wird; Sie sind völlig unabhängig.
CGLayers sind ein "spezielles" "high performance" Ding.
Sie könnten sie als "wie Bitmaps, aber besser."
Apple setzte sich und sagte: "Wir sind satt von Menschen mit Bitmaps, lass uns etwas besseres machen!" :-)
Tatsächlich arbeiten Sie nur mit CGLayers offscreen.
Um zu wiederholen, werden CGLayers vollständig außerhalb des Bildschirms verwendet.
Sobald sie bereit sind, können Sie sie dann auf Ihren tatsächlichen Bildschirm (sprich: sprengen Sie sie auf eine Ihrer Ansichten).
(jedoch: Anmerkung der: CGLayers häufig verwendet werden, wenn ich sage, dass sie verwendet werden, „allein“ Ich meine, sie verwendet werden „allein.“. Bildverarbeitung oder mathematische Berechnungen In diesem Fall ist CGLayers nie gesehen auf dem Bildschirm, und sie haben absolut keine Verbindung mit der Welt auf dem Bildschirm.)
Im Gegensatz ... CALayers sind einfach die Dinge "in" Ansichten. CALayers sind genau wie Ansichten funktionieren.
Also die beiden Konzepte sind völlig unterschiedlich.
CALayers sind nur die Dinge "in" Ansichten. Im Gegensatz dazu sind CGLayers Apples coole "Offscreen-, Hochleistungs-, Rechenmaschinen".
Um klar zu sein, haben CGLayers absolut keine Verbindung zu Ansichten und keine Verbindung mit Ansichten. (Sicher, Sie könnten einen CGLayer in eine Ansicht einfügen, aber dann können Sie "typography" oder "image" in eine Ansicht einfügen. Typografie und Bilder sind keine Ansichten und CGLayers sind keine Ansichten.)
Das typische Beispiel ist dies:
Sie möchten etwas kompliziert einmal zeichnen, und dann dieses Ding viele Male auf dem Bildschirm zeichnen. Die Antwort auf dieses Problem ist genau CGLayers. Ihr "Arbeitsbereich" wäre ein CGLayer; Sie könnten es dann auf einen Drucker, auf den Bildschirm oder was auch immer blit.
Um klar zu sein, sollte Apple meiner Meinung nach einen anderen Namen gewählt haben ...
ein guter Name wäre "CGCalculationSpace."
Die Tatsache, dass der Name das Wort "Schicht" enthält, lässt Sie an NSLayers denken.
Um zu wiederholen: Es gibt absolut keine Beziehung, in welcher Weise auch immer. CGLayers sind nicht einmal vage mit Layern verwandt.
Es gibt überhaupt keine Verbindung. Es ist wirklich verwirrend, dass die Buchstaben "l a y e r" im Namen verwendet werden - es ist eine Schande !!
CGLayers sollte vielleicht "Workspaces" oder "Berechnung Paradigmen" oder so ähnlich genannt werden.
Ich hoffe, es hilft und hoffe, Sie lesen immer noch!
Vielen Dank! Ich lese das komplett durch. Es war eine nette Beschreibung und war sehr hilfreich. Vor allem über CGLayer vs CALayer = "Off-Screen-Komposition" vs "Live-Komposition" und "nicht kompatibel". Ich habe eine Idee mit deiner Beschreibung; CALayer ist ein abstrahiertes OO-Modell von CGLayer. (Szenengraph?) Wie auch immer, nochmals vielen Dank! – Eonil
Ich las deine Antwort noch einmal, und mir wurde klar, dass ich ein Missverständnis hatte. CGLayer hat nichts mit CALayer zu tun. CGLayer ist Teil der Zeichenfunktion und CALayer ist Teil des Compositors. – Eonil
OMG, das ist eine erstaunliche Antwort. Vielen Dank, dass Sie sich die Zeit genommen haben, die beiden so schön zu unterscheiden! Es löste ein paar Zweifel von mir. ++ Punkte für "hoffe, du liest noch"! : D – codeBearer