Domanda

io sto confondendo CGLayer e CALayer. Sembrano simili, quindi perché non ci sono implementazioni separate? Qual è la differenza tra, e la compatibilità di, CGLayer e CALayer?

È stato utile?

Soluzione

Sono completamente diversi, e non è compatibile.

Per essere assolutamente chiaro:

è solo una coincidenza che la parola "layer" viene utilizzato in entrambe le nomi ; sono completamente estranei .

CGLayers sono una "speciale" "high performance" thingy.

Si potrebbe prendere in considerazione di loro "come bitmap, ma meglio".

di Apple si sedette e ha dichiarato: "Siamo stufi di persone che utilizzano immagini bitmap, facciamo qualcosa di meglio!" : -)

In realtà, è solo il lavoro con CGLayers fuori campo .

Per ripetere, CGLayers sono interamente utilizzati fuori dallo schermo.

Una volta che sono pronti, è possibile poi saltare al vostro schermo attuale (vale a dire: esplosione li a uno dei vostri punti di vista).

( Tuttavia : nota che: CGLayers sono spesso utilizzati "solo" Quando dico che sono utilizzati "da soli", voglio dire che sono utilizzati per:. Elaborazione di immagini o di calcoli matematici In tal caso , CGLayers sono mai visto sullo schermo, e non hanno assolutamente alcun collegamento con il mondo sullo schermo.)

Al contrario ... CALayers sono semplicemente le cose "in" punti di vista. CALayers sono proprio come viste di lavoro.

Così i due concetti sono completamente diversi.

CALayers sono solo le cose "in" punti di vista. In CGLayers contrasto sono fresche di Apple "fuori campo, ad alte prestazioni, macchine di calcolo."

Per essere chiari, CGLayers hanno assolutamente alcun collegamento con punti di vista, e nessuna associazione con vista. (Certo, si potrebbe incollare un CGLayer a vista, ma poi, è possibile incollare dire "tipografia" o "di un'immagine" a vista. Tipografia e le immagini non sono viste, e CGLayers non sono viste.)

L'esempio tipico è questo:

si vuole disegnare qualcosa di complicato, una volta, e quindi disegnare quella cosa molte volte sullo schermo. La risposta a questo problema è esattamente CGLayers. La vostra "area di lavoro" sarebbe un CGLayer; si potrebbe quindi blit mai ad una stampante, alla schermata, o qualsiasi altra cosa.

Per essere chiari, a mio parere Apple dovrebbe hanno scelto un nome diverso ...

un nome buono sarebbe "CGCalculationSpace".

Il fatto che il nome contiene la parola "strato", ti fa pensare di NSLayers.

Per ripetere: non c'è assolutamente alcuna relazione, alcun tipo, in qualsiasi modo. CGLayers non sono nemmeno vagamente correlate a strati.

Non v'è alcun collegamento, a tutti. E 'davvero confusione che le lettere "l a y e r" vengono utilizzati nel nome - è una vergogna !!

CGLayers dovrebbero essere chiamati forse "aree di lavoro" o "paradigmi di calcolo" o qualcosa del genere.

speriamo vi sia utile e spero che stai ancora leggendo!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top