Skip to main content
LanguageItaliano
Ingegneria5 minuti di letturaOttobre 2026

Come funzionano le animazioni primaverili in SwiftUI?

Risposta breve

In SwiftUI aggiungi una molla con .animation(.spring) o withAnimation(.spring). A partire da iOS 17 le impostazioni principali sono durata e rimbalzo, e ci sono preimpostazioni: .smooth (nessun rimbalzo), .snappy (un po') e .bouncy (più). Il codice precedente utilizza risposta e DampingFraction. Le molle SwiftUI mantengono la loro velocità quando una nuova animazione le interrompe, il che rende i gesti naturali.

Punto chiave

  • Utilizzare withAnimation(.spring) per modifiche di stato o .animation(.spring, value:) su una vista
  • iOS 17+: .spring(durata:bounce:) più preimpostazioni .smooth, .snappy e .bouncy
  • API precedente: .spring(response:dampingFraction:blendDuration:)
  • Le molle sono lo stile di animazione predefinito di SwiftUI a partire da iOS 17
  • Le molle interrotte mantengono la loro velocità, quindi i gesti si svolgono senza intoppi

SwiftUI anima i cambiamenti di stato. Quando un valore come isExpanded cambia all'interno di withAnimation(.spring), ogni vista che dipende da esso si sposta nel suo nuovo layout utilizzando una molla.

In iOS 17 e versioni successive, il modo più semplice per descrivere una molla è con due valori: durata, all'incirca quanto tempo impiega per stabilizzarsi, e rimbalzo, quanto supera. Un rimbalzo pari a 0 dà un movimento fluido senza superamento; valori più alti aggiungono rimbalzo. Apple fornisce anche preimpostazioni: .smooth, .snappy e .bouncy.

Il codice precedente utilizza .spring(response:dampingFraction:). La risposta è simile alla durata e una frazione di smorzamento pari a 1 significa nessun rimbalzo mentre valori più bassi aggiungono rimbalzo. Entrambe le forme descrivono la stessa molla fisica.

Il grande vantaggio delle molle è l'interruzione. Se un utente tocca di nuovo o un gesto di trascinamento termina nel mezzo dell'animazione, la nuova molla inizia dalla posizione e dalla velocità correnti, quindi non vi è alcun salto. Per i gesti di trascinamento, passa la velocità del gesto quando l'utente rilascia, in modo che l'elemento continui nella direzione in cui è stato lanciato.

Se lo stesso componente deve essere eseguito anche sul Web o su Android, è utile mantenere i valori Spring come token di movimento condivisi. ExodeUI, che produciamo, ha un runtime SwiftUI, quindi un componente progettato con le sue molle può funzionare in SwiftUI e su altre piattaforme.

Domande frequenti

Qual è l'animazione predefinita in SwiftUI?

A partire da iOS 17, l'animazione predefinita è una molla fluida.

Qual è la differenza tra .snappy e .bouncy?

.snappy si stabilizza rapidamente con un piccolo superamento; .bouncy supera di più. .smooth non ha overshoot.

Come posso convertire la risposta e il DampingFraction in durata e rimbalzo?

La risposta corrisponde approssimativamente alla durata. Una frazione di smorzamento pari a 1 corrisponde a rimbalzo 0; frazioni di smorzamento inferiori significano maggiore rimbalzo.

Come posso aggiungere velocità da un gesto di trascinamento?

Leggi la velocità al termine della resistenza e utilizza una molla interpolante o le API della molla più recenti che accettano una velocità iniziale.

Guide ed esempi correlati

Accorda una molla prima di scrivere il codice

Trascina i cursori, osserva il movimento e copia i valori della molla per SwiftUI, CSS e altre piattaforme.

Apri il generatore di molle
ExodeUI

EXODEUI DESKTOP

A little space for good ideas.

Choose your platform to get the official ExodeUI installer.

Looking for Intel Mac or other builds? Explore the web studio or check all download options.

Prefer the browser? Try for free in your browser →