SwiftUI animiert Zustandsänderungen. Wenn sich ein Wert wie isExpanded innerhalb von withAnimation(.spring) ändert, wird jede davon abhängige Ansicht mithilfe einer Feder in ihr neues Layout verschoben.
In iOS 17 und höher lässt sich eine Feder am einfachsten mit zwei Werten beschreiben: Dauer, ungefähr wie lange es dauert, sich zu stabilisieren, und Sprungkraft, wie stark sie überschwingt. Ein Sprungwert von 0 sorgt für eine gleichmäßige Bewegung ohne Überschwingen; Höhere Werte erhöhen die Sprungkraft. Apple bietet auch Voreinstellungen: .smooth, .snappy und .bouncy.
Älterer Code verwendet .spring(response:dampingFraction:). Die Reaktion ähnelt der Dauer, und ein Dämpfungsanteil von 1 bedeutet keinen Sprung, während niedrigere Werte den Sprung verstärken. Beide Formen beschreiben die gleiche physikalische Feder.
Der große Vorteil von Federn ist die Unterbrechung. Wenn ein Benutzer erneut tippt oder eine Ziehgeste mitten in der Animation endet, beginnt die neue Feder an der aktuellen Position und Geschwindigkeit, sodass kein Sprung erfolgt. Übergeben Sie bei Ziehgesten die Geschwindigkeit der Geste, wenn der Benutzer sie loslässt, damit das Element in die Richtung weiterläuft, in die es geworfen wurde.
Wenn dieselbe Komponente auch im Web oder auf Android ausgeführt werden muss, hilft es, Federwerte als gemeinsame Bewegungstoken beizubehalten. ExodeUI, das wir herstellen, verfügt über eine SwiftUI-Laufzeit, sodass eine entworfene Komponente mit ihren Federn in SwiftUI und auf anderen Plattformen spielen kann.