Skip to main content
LanguagePolski
Inżynieria5 minut czytaniaPaździernik 2026

Jak działają animacje wiosenne w SwiftUI?

Krótka odpowiedź

W SwiftUI dodajesz sprężynę za pomocą .animation(.spring) lub withAnimation(.spring). Od wersji iOS 17 głównymi ustawieniami są czas trwania i odbicie, a dostępne są ustawienia wstępne: .smooth (bez odbijania), .snappy (trochę) i .bouncy (więcej). Starszy kod używa odpowiedzi i tłumieniaFraction. Sprężyny SwiftUI zachowują prędkość, gdy przerywa je nowa animacja, dzięki czemu gesty stają się naturalne.

Rdzeń na wynos

  • Użyj withAnimation(.spring) do zmiany stanu lub .animation(.spring, value:) w widoku
  • iOS 17+: .spring(czas trwania:odbicie:) plus ustawienia wstępne .smooth, .snappy i .bouncy
  • Starsze API: .spring(response:dampingFraction:blendDuration:)
  • Sprężyny to domyślny styl animacji SwiftUI od wersji iOS 17
  • Przerwane sprężyny utrzymują prędkość, więc gesty przekazywane są płynnie

SwiftUI animuje zmiany stanu. Kiedy wartość taka jak isExpanded zmieni się wewnątrz withAnimation(.spring), każdy widok od niej zależny zostanie przeniesiony do nowego układu za pomocą sprężyny.

W systemie iOS 17 i nowszych wersjach sprężynę można najprościej opisać za pomocą dwóch wartości: czasu trwania, czyli mniej więcej czasu potrzebnego na ustabilizowanie się, oraz odbicia, czyli stopnia przekroczenia. Odbicie równe 0 zapewnia płynny ruch bez przeregulowania; wyższe wartości dodają odbicie. Apple udostępnia także gotowe ustawienia: .smooth, .snappy i .bouncy.

Starszy kod używa .spring(response:dampingFraction:). Reakcja jest podobna do czasu trwania, a ułamek tłumienia wynoszący 1 oznacza brak odbicia, podczas gdy niższe wartości powodują zwiększenie odbicia. Obie formy opisują tę samą sprężynę fizyczną.

Dużą zaletą sprężyn jest przerwanie. Jeśli użytkownik dotknie ponownie lub gest przeciągania zakończy się w połowie animacji, nowa sprężyna zacznie działać od bieżącego położenia i prędkości, więc nie będzie żadnego skoku. W przypadku gestów przeciągania należy przekazać prędkość gestu, gdy użytkownik puści, tak aby element kontynuował ruch w kierunku, w którym został rzucony.

Jeśli ten sam komponent musi także działać w Internecie lub na Androidzie, pomaga zachowanie wartości sprężyn w postaci współdzielonych tokenów ruchu. ExodeUI, który wykonujemy, ma środowisko wykonawcze SwiftUI, więc jeden zaprojektowany komponent wraz ze sprężynami może grać w SwiftUI i na innych platformach.

Często zadawane pytania

Jaka jest domyślna animacja w SwiftUI?

Od iOS 17 domyślną animacją jest gładka wiosna.

Jaka jest różnica między .snappy i .bouncy?

.snappy szybko się uspokaja z niewielkim przekroczeniem; .bouncy przekracza więcej. .smooth nie ma przeregulowania.

Jak przekonwertować reakcję i tłumienie na czas trwania i odbicie?

Odpowiedź z grubsza odpowiada czasowi trwania. Część tłumiąca wynosząca 1 to odbicie 0; niższy współczynnik tłumienia oznacza większe odbicie.

Jak dodać prędkość z gestu przeciągania?

Odczytaj prędkość po zakończeniu oporu i użyj sprężyny interpolującej lub nowszych interfejsów API sprężyn, które akceptują prędkość początkową.

Powiązane przewodniki i przykłady

Dostrój sprężynę przed napisaniem kodu

Przeciągnij suwaki, obserwuj ruch i kopiuj wartości sprężyn dla SwiftUI, CSS i innych platform.

Otwórz generator sprężyn
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 →