Core Animation: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Morry39 (discussione | contributi)
Fix pagina
Funzionalità collegamenti suggeriti: 3 collegamenti inseriti.
 
(7 versioni intermedie di 5 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>.
{{F|informatica|febbraio 2013}}
'''Core Animation''' è un [[Application programming interface|API]] per la visualizzazione dei dati, usata sotto il sistema operativo [[macOS]] per produrre un'interfaccia utente animata.
 
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 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 ==
Line 9 ⟶ 8:
 
== 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 ==
Line 20 ⟶ 174:
* [[Core Image]]
* [[Core Video]]
*
* [[Time Machine (software)]]
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{cita web|http://www.apple.com/it/macosx/technology/coreanimation.html|Core Animation @ Apple|lingua=en}}
 
{{Software iOS}}