Core Animation: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
Funzionalità collegamenti suggeriti: 3 collegamenti inseriti.
 
(50 versioni intermedie di 34 utenti non mostrate)
Riga 1:
'''Core Animation''' è un [[Application programming interface|API]] per la visualizzazione dei dati, usata sotto il sistema operativo [[macOS]] per produrre un'interfaccia utente animata<ref>{{Cita web|url=https://developer.apple.com/documentation/quartzcore|titolo=Apple Developer Documentation|sito=developer.apple.com|accesso=2021-02-25}}</ref>.
'''Core Animation''' è una tecnologia sviluppata da [[Apple Computer]] per creare le animazioni. La prima presentazione pubblica di questa tecnologia si è avuta il [[7 agosto]] [[2006]] durante il Keynote al Worldwide Developers Conference. Core Animation è in grado di sfruttare i core inclusi nei nuovi processori Intel ma è in grado di funzionare ugualmente sulle macchine dotate di processori PowerPC.
Core Animation un componente chiave di Time Machine. Per esempio se un utente vuole realizzare uno screensaver basta che specifichi il punto di partenza e di arrivo dell'animazione e poi Core Animation calcolerà automaticamente i punti intermedi utilizzando la potenza di calcolo della scheda grafica e gli eventuali multi-core del processore se presenti.
 
Core Animation offre la possibilità agli sviluppatori di produrre interfacce utente animate, sfruttando un modello implicito. Il programmatore specifica solamente lo stato iniziale e finale di un oggetto, mente Core Animation è in grado di calcolarne lo spostamento. Questo permette la creazione relativamente semplice di complicate animazioni, senza richiedere nessun codice specifico.
Core Animation sarà incluso nel [[Mac OS X 10.5 Leopard]]
Core Animation può creare un'animazione per qualunque oggetto che sia visibile e fornisce un accesso unificato a [[Core Image]], [[Core Video]] e altre tecnologie [[Quartz (Mac OS X)|Quartz]]. Come altri modelli grafici, Core Animation può sfruttare l'accelerazione con un processore grafico ([[Graphics Processing Unit|GPU]])<ref>{{Cita web|url=https://developer.apple.com/leopard/overview/apptech.html|titolo=apple}}</ref>.
 
== Storia ==
Core Animation è apparso pubblicamente per la prima volta con [[Mac OS X Leopard]], ma realmente è emerso dallo sviluppo di iPhone. È stato mostrato in una demo, il 7 agosto [[2006]] durante l'annuale conferenza [[WWDC]]. Al [[Macworld Expo]], Apple ha rivelato che anche iPhone utilizza lo stesso concetto di animazione.
 
== Funzionamento ==
Le animazioni vengono eseguite in un [[thread (informatica)|thread]] indipendente dal programma, consentendo così l'esecuzione di processi simultanea a Core Animation. In questo modo le prestazioni dell'applicazione non vengono diminuite ed è possibile controllare, interrompere, invertire e ricostruire le animazioni stesse<ref>{{Cita web|url=http://www.apple.com/macosx/technology/coreanimation.html|titolo=Apple - Mac OS X Leopard - Technology - Core Animation|sito=web.archive.org|data=2007-10-24|accesso=2021-02-25|dataarchivio=24 ottobre 2007|urlarchivio=https://web.archive.org/web/20071024164555/http://www.apple.com/macosx/technology/coreanimation.html|urlmorto=sì}}</ref>.
 
== Esempi ==
Uno degli esempi più evidenti di Core Animation, è [[iChat]], l'istant messenger di Apple, ora sostituito con [[iMessage]]. Le animazioni vengono utilizzate per aggiungere gli amici che hanno effettuato l'accesso nella tua lista contatti<ref>{{Cita web|url=http://www.ralphjohns.co.uk/versions/ichat2/ichat2.html|titolo=About iChat 2|accesso=2021-02-25}}</ref><ref>{{Cita web|url=https://support.apple.com/it-it/HT207006|titolo=Informazioni su iMessage e SMS/MMS|sito=Apple Support|lingua=it|accesso=2021-02-25}}</ref>.
 
Ancora un altro esempio è l'interfaccia dell'[[iPhone]], dispositivo che monta una versione modificata di macOS, che sfrutta appunto Core Animation.
 
== Temi ==
 
=== Nozioni di base sui livelli ===
<code>class CALayer</code>
 
Un oggetto che gestisce il contenuto basato su immagini e consente di eseguire animazioni su quel contenuto.
 
<code>protocol CALayerDelegate</code>
 
Metodi che un'app può implementare per rispondere agli eventi relativi al livello.
 
<code>class CAConstraint</code>
 
Una rappresentazione di un singolo vincolo di layout tra due livelli.
 
<code>protocol CALayoutManager</code>
 
Metodi che consentono a un oggetto di gestire il layout di un layer e dei suoi sottolivelli.
 
<code>class CAConstraintLayoutManager</code>
 
Un oggetto che fornisce un gestore di layout basato su vincoli.
 
<code>protocol CAAction</code>
 
Un'interfaccia che consente agli oggetti di rispondere alle azioni innescate da una <code>CALayer</code>modifica.
 
=== Testo, forme e sfumature ===
<code>class CATextLayer</code>
 
Un livello che fornisce un layout di testo semplice e il [[rendering]] di stringhe normali o attribuite.
 
<code>class CAShapeLayer</code>
 
Un livello che disegna una spline Bézier cubica nel suo spazio di coordinate.
 
<code>class CAGradientLayer</code>
 
Un livello che disegna una sfumatura di colore sul colore di sfondo, riempiendo la forma del livello (compresi gli angoli arrotondati)
 
=== Animazione ===
<code>class CAAnimation</code>
 
La superclasse astratta per le animazioni in Core Animation.
 
<code>protocol CAAnimationDelegate</code>
 
Metodi che l'app può implementare per rispondere all'avvio e all'arresto delle animazioni.
 
<code>class CAPropertyAnimation</code>
 
Una sottoclasse astratta di <code>CAAnimation</code>per la creazione di animazioni che manipolano il valore delle proprietà del livello.
 
<code>class CABasicAnimation</code>
 
Un oggetto che fornisce funzionalità di animazione di base con [[fotogramma]] chiave singolo per una proprietà del livello.
 
<code>class CAKeyframeAnimation</code>
 
Un oggetto che fornisce funzionalità di animazione dei fotogrammi chiave per un oggetto livello.
 
<code>class CASpringAnimation</code>
 
Un'animazione che applica una forza simile a una molla alle proprietà di un livello.
 
<code>class CATransition</code>
 
Un oggetto che fornisce una transizione animata tra gli stati di un livello.
 
<code>class CAValueFunction</code>
 
Un oggetto che fornisce un metodo flessibile per definire le trasformazioni animate.
 
=== Gruppi di animazione ===
<code>class CAAnimationGroup</code>
 
Un oggetto che consente di raggruppare ed eseguire più animazioni contemporaneamente.
 
<code>class CATransaction</code>
 
Un meccanismo per raggruppare più operazioni dell'albero dei livelli in aggiornamenti atomici dell'albero di rendering.
 
=== Tempistica dell'animazione ===
<code>func CACurrentMediaTime() -> CFTimeInterval</code>
 
Restituisce il tempo assoluto corrente, in secondi.
 
<code>class CAMediaTimingFunction</code>
 
Una funzione che definisce il ritmo di un'animazione come una curva di temporizzazione.
 
<code>protocol CAMediaTiming</code>
 
Metodi che modellano un sistema di temporizzazione gerarchico, consentendo agli oggetti di mappare il tempo tra l'ora principale e l'ora locale.
 
<code>class CADisplayLink</code>
 
Un oggetto timer che consente all'applicazione di sincronizzare il proprio disegno con la frequenza di aggiornamento del display.
 
=== Sistemi di particelle ===
<code>class CAEmitterLayer</code>
 
Un livello che emette, anima e rende un sistema di particelle.
 
<code>class CAEmitterCell</code>
 
La definizione di una particella emessa da un <code>CAEmitterLayer</code>.
 
=== Opzioni avanzate dei livelli ===
<code>class CAScrollLayer</code>
 
Un livello che visualizza contenuti scorrevoli più grandi dei propri limiti.
 
<code>class CATiledLayer</code>
 
Un livello che fornisce un modo per fornire in modo asincrono porzioni del contenuto del livello, potenzialmente memorizzato nella cache a più livelli di dettaglio.
 
<code>class CATransformLayer</code>
 
Oggetti utilizzati per creare vere gerarchie di livelli 3D, piuttosto che il modello di rendering della gerarchia appiattito utilizzato da altre classi <code>CALayer</code>.
 
<code>class CAReplicatorLayer</code>
 
Un livello che crea un numero specificato di copie del sottolivello con trasformazioni geometriche, temporali e di colore variabili.
 
=== Metal e OpenGL ===
<code>class CAMetalLayer</code>
 
Un livello di animazione principale in cui Metal può eseguire il rendering, in genere da visualizzare sullo schermo.
 
<code>protocol CAMetalDrawable</code>
 
Un oggetto <code>MetalDrawable</code> associato a un livello Core Animation.
 
<code>class CAEDRMetadata</code>
 
[[Metadato|Metadati]] che descrivono come i valori della gamma dinamica estesa (EDR) devono essere mappati sui toni.
 
<code>class CARenderer</code>
 
Un livello che consente a un'applicazione di eseguire il rendering di un albero dei livelli in un contesto [[OpenGL]] principale.
 
=== Visualizzazione remota del contenuto dei livelli ===
<code>class CARemoteLayerClient</code>
 
<code>class CARemoteLayerServer</code>
 
=== Trasforma ===
<code>Transforms</code>
 
Definisce le matrici di trasformazione per applicare trasformazioni affini ai livelli in Core Animation.
 
== Note ==
<references />
 
== Voci correlate ==
* [[Core Audio]]
* [[Core Image]]
* [[Core Video]]
*
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
*{{en}} [http://www.apple.com/macosx/leopard/coreanimation.html Core Animation @ Apple]
 
{{Mac OS X}}
{{Software iOS}}
{{macOS}}
{{portale|Apple}}
 
[[Categoria:MacTecnologie OSdi XmacOS]]