Skip to main content
LanguageMagyar
Mérnöki5 perc olvasás2026. október

Hogyan működnek a tavaszi animációk a SwiftUI-ben?

Rövid válasz

A SwiftUI-ben egy rugót ad hozzá .animation(.spring) vagy Animation(.spring) karakterekkel. Az iOS 17 óta a fő beállítások az időtartam és a visszapattanás, és vannak előre beállított értékek: .smooth (nincs visszapattanás), .snappy (egy kicsit) és .bouncy (több). A régebbi kód választ és csillapítási törtet használ. A SwiftUI rugók megtartják sebességüket, amikor egy új animáció megszakítja őket, ami természetessé teszi a gesztusokat.

Core Takeaway

  • Használja az Animation(.spring) elemet az állapotváltoztatáshoz, vagy az .animation(.spring, value:) elemet egy nézeten
  • iOS 17+: .spring(duration:bounce:) plusz .smooth, .snappy és .bouncy előbeállítások
  • Régebbi API: .spring(response:dampingFraction:blendDuration:)
  • A rugók a SwiftUI alapértelmezett animációs stílusa az iOS 17 óta
  • A megszakadt rugók megtartják sebességüket, így a gesztusok zökkenőmentesen átadnak

A SwiftUI animálja az állapotváltozásokat. Amikor egy érték, például az isExpanded, az Animation(.spring) segítségével megváltozik, minden ettől függő nézet egy rugó segítségével az új elrendezésre lép.

Az iOS 17-es és újabb verzióiban a rugó leírásának legegyszerűbb módja két értékkel van megadva: időtartam, nagyjából mennyi időbe telik az ülepedéshez, és visszapattanás, mennyit lép túl. A 0 ugrás sima mozgást biztosít túllövés nélkül; magasabb értékek ugrálást adnak. Az Apple előbeállításokat is biztosít: .smooth, .snappy és .bouncy.

A régebbi kód a .spring(response:dampingFraction:) karakterláncot használja. A válasz az időtartamhoz hasonló, és az 1-es csillapítás azt jelenti, hogy nincs visszapattanás, míg az alacsonyabb értékek visszapattanást jelentenek. Mindkét forma ugyanazt a fizikai rugót írja le.

A rugók nagy előnye a megszakítás. Ha a felhasználó ismét megérinti, vagy egy húzómozdulat az animáció közben véget ér, az új rugó az aktuális pozícióból és sebességből indul, így nincs ugrás. Húzási gesztusok esetén adja át a kézmozdulat sebességét, amikor a felhasználó elengedi, így az elem abba az irányba megy tovább, ahol dobták.

Ha ugyanannak az összetevőnek a weben vagy az Androidon is futnia kell, a rugóértékek megosztott mozgási tokenekként való megtartása segít. Az általunk gyártott ExodeUI SwiftUI futásidejű, így egy tervezett alkatrész rugóival együtt tud játszani a SwiftUI-ben és más platformokon.

Gyakran ismételt kérdések

Mi az alapértelmezett animáció a SwiftUI-ben?

Az iOS 17 óta az alapértelmezett animáció egy sima rugó.

Mi a különbség a .snappy és a .bouncy között?

.snappy kis túllövéssel gyorsan rendeződik; .pattogós túllövés többet. .simán nincs túllövés.

Hogyan konvertálhatom át a választ és a csillapítási törtet időtartamra és visszapattanásra?

A válasz nagyjából leképezi az időtartamot. Az 1-es csillapítási hányad a visszapattanás 0; az alacsonyabb csillapítási frakciók nagyobb visszapattanást jelentenek.

Hogyan adhatok hozzá sebességet húzómozdulatból?

Olvassa le a sebességet, amikor az ellenállás véget ér, és használjon interpoláló rugót vagy az újabb rugós API-kat, amelyek elfogadják a kezdeti sebességet.

Kapcsolódó útmutatók és példák

Hangoljon be egy rugót, mielőtt kódot írna

Húzza el a csúszkákat, nézze meg a mozgást, és másolja a rugóértékeket a SwiftUI, CSS és más platformokon.

Nyissa ki a rugógenerátort
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 →