2010-12-16 12 views

risposta

111

Sono completamente diversi e non compatibili.

essere assolutamente chiaro:

è rigorosamente una coincidenza che la parola "layer" viene utilizzato in entrambi i nomi ; sono completamente indipendenti.

I CGLayer sono una cosa "speciale" "ad alte prestazioni".

Si potrebbe considerare "come bitmap, ma meglio".

Apple si è seduto e ha detto "Siamo malati di persone che usano bitmap, facciamo qualcosa di meglio!" :-)

In effetti, si lavora solo con CGLayers fuori campo.

Per ripetere, CGLayer sono interamente utilizzati fuori schermo.

Una volta che sono pronti, si può quindi saltare li al vostro schermo attuale (vale a dire: esplosione li a uno dei vostri punti di vista).

(Tuttavia: notare che: CGLayers sono spesso usati quando dico che sono utilizzati "da soli", voglio dire che sono usati per "soli".:. Elaborazione di immagini o di calcoli matematici In tal caso, CGLayers non sono mai visto sullo schermo, e non hanno assolutamente alcuna connessione con il mondo sullo schermo.)

Al contrario ... I CALayer sono semplicemente le viste "in". I CALayer sono come funzionano le visualizzazioni.

Quindi i due concetti sono completamente diversi.

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

Per essere chiari, i CGLayer non hanno assolutamente alcuna connessione con le viste e nessuna associazione con le viste. (Certo, si può incollare un CGLayer in una vista, ma poi, si può incollare dire "tipografia" o "un'immagine" in una vista. La tipografia e le immagini non sono viste e CGLayer non sono viste.)

L'esempio tipico è questo:

si desidera disegnare qualcosa di complicato una volta e quindi disegnare quella cosa più volte sullo schermo. La risposta a questo problema è esattamente CGLayers. La tua "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 avrebbe dovuto scegliere un nome diverso ...

un buon nome sarebbe "CGCalculationSpace."

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

ripetere: non c'è assolutamente alcuna relazione, alcun tipo, in qualsiasi modo. I CGLayer non sono nemmeno vagamente legati ai livelli.

Non v'è alcuna connessione, a tutti. È davvero confuso che le lettere "l a y e r" siano usate nel nome - è un peccato !!

CGLayer dovrebbero essere chiamati forse "spazi di lavoro" o "paradigmi di calcolo" o qualcosa del genere.

Spero che sia d'aiuto e spero che tu stia ancora leggendo!

+2

Grazie mille! Ho letto completamente. E 'stata una bella descrizione ed è stata molto utile. Soprattutto su CGLayer vs CALayer = 'composizione fuori schermo' vs 'composizione dal vivo' e 'non compatibile'. Ho un'idea con la tua descrizione; CALayer è un modello OO astratto di CGLayer. (Grafico della scena?) Comunque, grazie ancora! – Eonil

+2

ho riletto la tua risposta, e ho capito che avevo un malinteso. CGLayer non è correlato a CALayer. CGLayer fa parte della struttura di disegno e CALayer fa parte del compositore. – Eonil

+2

OMG, questa è una risposta sorprendente. Grazie mille per aver trovato il tempo di distinguere i due così bene! Ha risolto un paio di dubbi. ++ punti per "spero tu stia ancora leggendo"! : D – codeBearer

Problemi correlati