SwiftUI animerer endringer i tilstanden. Når en verdi som isExpanded endres inne med Animation(.spring), flyttes hver visning som avhenger av den til sin nye layout ved hjelp av en fjær.
I iOS 17 og nyere er den enkleste måten å beskrive en fjær med to verdier: varighet, omtrent hvor lang tid det tar å sette seg, og sprett, hvor mye den overskrider. En sprett på 0 gir jevn bevegelse uten overskridelse; høyere verdier legger til sprett. Apple tilbyr også forhåndsinnstillinger: .smooth, .snappy og .bouncy.
Eldre kode bruker .spring(respons:dempingFraction:). Responsen er lik varighet, og en dempende brøkdel på 1 betyr ingen sprett mens lavere verdier legger til sprett. Begge former beskriver den samme fysiske våren.
Den store fordelen med fjærer er avbrudd. Hvis en bruker trykker igjen eller en drabevegelse avslutter midt i animasjonen, starter den nye fjæren fra gjeldende posisjon og hastighet, så det er ikke noe hopp. For dragbevegelser passerer du bevegelsens hastighet når brukeren slipper, slik at elementet fortsetter i retningen det ble kastet.
Hvis den samme komponenten også må kjøres på nettet eller Android, hjelper det å beholde vårverdier som delte bevegelsestokener. ExodeUI, som vi lager, har en SwiftUI kjøretid, så en designet komponent med fjærene kan spille i SwiftUI og på andre plattformer.