Skip to main content
LanguageČeština
Inženýrství5 min čteníříjna 2026

Jak fungují jarní animace v SwiftUI?

Stručná odpověď

V SwiftUI přidáte pružinu s .animation(.spring) nebo withAnimation(.spring). Od iOS 17 jsou hlavními nastaveními trvání a odrazy a jsou zde přednastaveny: .smooth (bez odrazu), .snappy (trochu) a .bouncy (více). Starší kód používá response a dampingFraction. Pružiny SwiftUI si zachovávají svou rychlost, když je přeruší nová animace, takže gesta působí přirozeně.

Core Takeaway

  • Použijte withAnimation(.spring) pro změny stavu nebo .animation(.spring, value:) v zobrazení
  • iOS 17+: .spring(duration:bounce:) plus předvolby .smooth, .snappy a .bouncy
  • Starší API: .spring(response:dampingFraction:blendDuration:)
  • Pružiny jsou výchozí styl animace SwiftUI od iOS 17
  • Přerušované pružiny si udržují svou rychlost, takže gesta se plynule předávají

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.

Často kladené otázky

Jaká je výchozí animace v SwiftUI?

Od iOS 17 je výchozí animace plynulá pružina.

Jaký je rozdíl mezi .snappy a .bouncy?

.snappy se rychle usadí s malým překmitnutím; .bouncy více přestřeluje. .smooth nemá překmit.

Jak převedu odezvu a dampingFraction na trvání a odraz?

Odezva zhruba mapuje trvání. Tlumicí zlomek 1 je odraz 0; nižší frakce tlumení znamenají větší odraz.

Jak přidám rychlost z gesta tažení?

Odečtěte rychlost, když tažení skončí, a použijte interpolační pružinu nebo novější API pružiny, která akceptují počáteční rychlost.

Související návody a příklady

Před psaním kódu nalaďte pružinu

Přetáhněte posuvníky, sledujte pohyb a kopírujte hodnoty pružin pro SwiftUI, CSS a další platformy.

Otevřete pružinový generátor
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 →