SwiftUI animă schimbările de stare. Când o valoare precum isExpanded se modifică în interiorul cu Animation(.spring), fiecare vizualizare care depinde de ea trece la noul aspect folosind un arc.
În iOS 17 și versiuni ulterioare, cel mai simplu mod de a descrie un arc este cu două valori: durată, aproximativ cât timp durează să se așeze și sări, cât de mult depășește. O săritură de 0 oferă o mișcare lină, fără depășire; valorile mai mari adaugă sărituri. Apple oferă, de asemenea, presetări: .smooth, .snappy și .bouncy.
Codul mai vechi folosește .spring(răspuns:dampingFraction:). Răspunsul este similar cu durata, iar o fracțiune de amortizare de 1 înseamnă că nu există respingere, în timp ce valorile mai mici adaugă respingere. Ambele forme descriu același izvor fizic.
Marele avantaj al arcurilor este întreruperea. Dacă un utilizator atinge din nou sau un gest de glisare se termină la mijlocul animației, noul arc pornește de la poziția și viteza curente, deci nu există niciun salt. Pentru gesturile de tragere, treceți viteza gestului atunci când utilizatorul eliberează, astfel încât elementul să continue în direcția în care a fost aruncat.
Dacă aceeași componentă trebuie să ruleze și pe web sau Android, păstrarea valorilor de primăvară ca simboluri de mișcare partajate ajută. ExodeUI, pe care îl producem, are un timp de rulare SwiftUI, astfel încât o componentă proiectată cu arcurile sale poate juca în SwiftUI și pe alte platforme.