SwiftUI animuje změny stavu. Když se hodnota jako isExpanded uvnitř změní pomocí Animation(.spring), každý pohled, který na ní závisí, se přesune do svého nového rozvržení pomocí pružiny.
V iOS 17 a novějších je nejjednodušší způsob, jak popsat pružinu, pomocí dvou hodnot: trvání, zhruba jak dlouho trvá usazení, a odskok, jak moc přestřelí. Odskok 0 poskytuje plynulý pohyb bez překmitu; vyšší hodnoty přidávají odraz. Apple také poskytuje předvolby: .smooth, .snappy a .bouncy.
Starší kód používá .spring(response:dampingFraction:). Odezva je podobná trvání a zlomek tlumení 1 znamená, že nedojde k žádnému odrazu, zatímco nižší hodnoty přidají odraz. Obě formy popisují stejnou fyzickou pružinu.
Velkou výhodou pružin je přerušení. Pokud uživatel znovu klepne nebo gesto tažení skončí uprostřed animace, nová pružina začne od aktuální polohy a rychlosti, takže nedojde k žádnému skoku. U gest přetažení předejte rychlost gesta, když jej uživatel uvolní, aby prvek pokračoval ve směru, ve kterém byl vržen.
Pokud stejná komponenta potřebuje běžet také na webu nebo Androidu, pomůže zachování jarních hodnot jako sdílených pohybových tokenů. ExodeUI, který vyrábíme, má běhové prostředí SwiftUI, takže jedna navržená komponenta se svými pružinami může hrát v SwiftUI a na jiných platformách.