0Pricing
Swift Academy · Lezione

Animazioni implicite ed esplicite

Animi le proprietà dei layer con CABasicAnimation.

Animazioni implicite ed esplicite è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Swift Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Swift Academy include 4 lezioni in totale.

Due modi per animare i layer

Core Animation offre animazioni implicite, automatiche quando cambia una proprietà, e animazioni esplicite, per le quali si crea un oggetto animazione.

Conoscere entrambi i tipi e il modo in cui interagiscono è fondamentale per ottenere movimenti fluidi.

Animazioni implicite

La modifica di una proprietà animatable di un layer indipendente attiva un’animazione implicita con una curva predefinita di 0.25s, senza richiedere alcun oggetto animazione.

let layer = CALayer()
// Later, this animates automatically:
layer.opacity = 0.0

Proprietà animabili

Molte proprietà dei layer sono animabili: opacity, position, bounds, backgroundColor, transform, cornerRadius e altre.

layer.cornerRadius = 20 // animates implicitly
layer.backgroundColor = UIColor.systemGreen.cgColor

Azioni e meccanismo delle azioni

Le animazioni implicite sono gestite dalle azioni. Quando cambia una proprietà, il layer cerca una CAAction da eseguire. Può personalizzare o disabilitare queste azioni.

I layer associati alle viste disabilitano le animazioni implicite

I layer associati a una UIView hanno le animazioni implicite disattivate. Li anima tramite UIView.animate oppure usando animazioni esplicite.

UIView.animate(withDuration: 0.3) {
    view.alpha = 0
}

CABasicAnimation

CABasicAnimation anima una proprietà tra un fromValue e un toValue. La aggiunga al layer usando un key path corrispondente alla proprietà.

let anim = CABasicAnimation(keyPath: "opacity")
anim.fromValue = 1.0
anim.toValue = 0.0
anim.duration = 0.5
layer.add(anim, forKey: "fade")

Presentation e model

Un’animazione esplicita modifica solo i valori di presentation, ovvero quelli visualizzati sullo schermo; il valore model del layer torna al valore precedente al termine dell’animazione.

Per rendere permanente la modifica, imposti anche il valore model.

layer.opacity = 0.0 // set model value so it persists
layer.add(anim, forKey: "fade")

Animazioni keyframe

CAKeyframeAnimation anima più values attraverso keyTimes oppure lungo un path, ed è ideale per rimbalzi o movimenti lungo curve.

let move = CAKeyframeAnimation(keyPath: "position")
move.values = [
    NSValue(cgPoint: CGPoint(x: 0, y: 0)),
    NSValue(cgPoint: CGPoint(x: 100, y: 0)),
    NSValue(cgPoint: CGPoint(x: 100, y: 100))
]
move.duration = 1.0
layer.add(move, forKey: "path")

Funzioni temporali

Controlli l’accelerazione con timingFunction: ease-in, ease-out, lineare o una curva di Bezier cubica personalizzata.

anim.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut)

Raggruppamenti e transazioni

Racchiuda più modifiche in una CATransaction per condividere durata e temporizzazione oppure per disabilitare completamente le animazioni implicite.

CATransaction.begin()
CATransaction.setDisableActions(true)
layer.position = CGPoint(x: 200, y: 200)
CATransaction.commit()

Delegati delle animazioni e completamento

Imposti CATransaction.setCompletionBlock o un delegato dell’animazione per eseguire codice al termine del movimento, ad esempio per operazioni di pulizia, concatenamento o aggiornamento dello stato.

CATransaction.begin()
CATransaction.setCompletionBlock { print("done") }
layer.add(anim, forKey: "fade")
CATransaction.commit()

Verifica rapida: animazioni

Verifichi la sua comprensione delle animazioni implicite ed esplicite.

Riepilogo: animazioni implicite ed esplicite

I layer indipendenti si animano implicitamente tramite azioni quando cambiano proprietà animabili; i layer associati alle viste disabilitano questo comportamento e usano UIView.animate. Le animazioni esplicite CABasicAnimation e CAKeyframeAnimation animano il valore presentation, quindi aggiorni il valore model per mantenere il risultato.

Regoli il movimento con le funzioni temporali, raggruppi le modifiche in una CATransaction e usi i blocchi di completamento per le operazioni successive.

Domande Frequenti

La lezione «Animazioni implicite ed esplicite» è gratuita?

Sì — il testo completo di «Animazioni implicite ed esplicite» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Swift Academy, passa a CoddyKit PRO. Il corso Swift Academy include 4 lezioni in totale.

Cosa imparerò in «Animazioni implicite ed esplicite»?

Animi le proprietà dei layer con CABasicAnimation. Eserciti Swift Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Swift Academy?

Non è richiesta alcuna esperienza precedente. Swift Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Animazioni implicite ed esplicite»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Swift Academy?

Sì. Ogni lezione Swift Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Fondamenti di CALayer
  2. Animazioni implicite ed esplicite
  3. Trasformazioni ed effetti 3D
  4. Disegno personalizzato con Core Graphics
← Torna a Swift Academy