Skip to main content
LanguageDansk
Engineering5 min læstoktober 2026

Hvordan fungerer forårsanimationer i SwiftUI?

Kort svar

I SwiftUI tilføjer du en fjeder med .animation(.spring) eller medAnimation(.spring). Siden iOS 17 er hovedindstillingerne varighed og bounce, og der er forudindstillinger: .smooth (ingen bounce), .snappy (lidt) og .bounce (mere). Ældre kode bruger respons og dampingFraction. SwiftUI fjedre holder deres hastighed, når en ny animation afbryder dem, hvilket får bevægelser til at føles naturlige.

Core Takeaway

  • Brug withAnimation(.spring) til tilstandsændringer eller .animation(.spring, value:) på en visning
  • iOS 17+: .spring(varighed:bounce:) plus .smooth, .snappy og .bouncy forudindstillinger
  • Ældre API: .spring(respons:dampingFraction:blendDuration:)
  • Fjedre er SwiftUI's standard animationsstil siden iOS 17
  • Afbrudte fjedre holder deres hastighed, så bevægelser afgives jævnt

SwiftUI animerer ændringer i tilstanden. Når en værdi som f.eks. isExpanded ændres inde med Animation(.spring), flyttes hver visning, der afhænger af den, til sit nye layout ved hjælp af en fjeder.

I iOS 17 og nyere er den enkleste måde at beskrive en fjeder med to værdier: varighed, omtrent hvor lang tid det tager at sætte sig, og hoppe, hvor meget den overskrider. Et opspring på 0 giver jævn bevægelse uden overskridelse; højere værdier tilføjer bounce. Apple tilbyder også forudindstillinger: .smooth, .snappy og .bouncy.

Ældre kode bruger .spring(respons:dampingFraction:). Responsen svarer til varigheden, og en dæmpningsbrøkdel på 1 betyder ingen afvisning, mens lavere værdier tilføjer afvisning. Begge former beskriver det samme fysiske forår.

Den store fordel ved fjedre er afbrydelse. Hvis en bruger trykker igen, eller en trækbevægelse slutter midt i animationen, starter den nye fjeder fra den aktuelle position og hastighed, så der er intet spring. For trækbevægelser skal du passere bevægelsens hastighed, når brugeren slipper, så elementet fortsætter i den retning, det blev kastet.

Hvis den samme komponent også skal køre på nettet eller Android, hjælper det at holde fjederværdier som delte bevægelsestokens. ExodeUI, som vi laver, har en SwiftUI runtime, så en designet komponent med dens fjedre kan spille i SwiftUI og på andre platforme.

Ofte stillede spørgsmål

Hvad er standardanimationen i SwiftUI?

Siden iOS 17 er standardanimationen et glat fjeder.

Hvad er forskellen mellem .snappy og .bouncy?

.snappy afregner hurtigt med et lille overskud; .bouncy overskrider mere. .smooth har ingen overskridelse.

Hvordan konverterer jeg respons og dæmpningsfraktion til varighed og bounce?

Svar afspejler groft varighed. En dæmpningsfraktion på 1 er bounce 0; lavere dæmpningsfraktioner betyder mere bounce.

Hvordan tilføjer jeg hastighed fra en trækbevægelse?

Læs hastigheden, når træk slutter, og brug en interpolerende fjeder eller de nyere fjeder-API'er, der accepterer en starthastighed.

Relaterede vejledninger og eksempler

Indstil en fjeder, før du skriver kode

Træk skyderne, se bevægelsen, og kopier fjederværdierne for SwiftUI, CSS og andre platforme.

Åbn fjedergeneratoren
ExodeUI

EXODEUI DESKTOP

A little space for good ideas.

Choose your platform to get the official ExodeUI installer.

Looking for Intel Mac or other builds? Explore the web studio or check all download options.

Prefer the browser? Try for free in your browser →