SwiftUI animeert statusveranderingen. Wanneer een waarde zoals isExpanded binnen verandert withAnimation(.spring), wordt elke weergave die ervan afhankelijk is, met behulp van een veer naar de nieuwe lay-out verplaatst.
In iOS 17 en hoger is de eenvoudigste manier om een veer te beschrijven met twee waarden: duur, hoe lang het ongeveer duurt voordat de veer tot rust komt, en stuiteren, hoeveel de veer doorschiet. Een bounce van 0 zorgt voor een vloeiende beweging zonder doorschieten; hogere waarden voegen bounce toe. Apple biedt ook voorinstellingen: .smooth, .snappy en .bouncy.
Oudere code gebruikt .spring(response:dampingFraction:). De respons is vergelijkbaar met de duur, en een dempingsfractie van 1 betekent dat er geen bounce is, terwijl lagere waarden voor bounce zorgen. Beide vormen beschrijven dezelfde fysieke lente.
Het grote voordeel van veren is de onderbreking. Als een gebruiker opnieuw tikt of een sleepgebaar halverwege de animatie eindigt, begint de nieuwe veer vanaf de huidige positie en snelheid, dus er is geen sprong. Voor sleepgebaren geeft u de snelheid van het gebaar door wanneer de gebruiker loslaat, zodat het element doorgaat in de richting waarin het werd gegooid.
Als hetzelfde onderdeel ook op internet of Android moet draaien, helpt het behouden van veerwaarden als gedeelde bewegingstokens. De ExodeUI, die wij maken, heeft een SwiftUI-runtime, dus één ontworpen component met zijn veren kan in SwiftUI en op andere platforms worden gespeeld.