Skip to main content
LanguageБългарски
Инженерство5 минути четенеоктомври 2026 г

Как работят пролетните анимации в SwiftUI?

Кратък отговор

В SwiftUI добавяте пружина с .animation(.spring) или withAnimation(.spring). От iOS 17 основните настройки са продължителност и отскачане и има предварително зададени: .smooth (без отскачане), .snappy (малко) и .bouncy (повече). По-старият код използва response и dampingFraction. SwiftUI пружините запазват скоростта си, когато нова анимация ги прекъсне, което кара жестовете да се чувстват естествени.

Ядро за вкъщи

  • Използвайте withAnimation(.spring) за промени в състоянието или .animation(.spring, value:) на изглед
  • iOS 17+: .spring(duration:bounce:) плюс предварително зададени .smooth, .snappy и .bouncy
  • По-стар API: .spring(response:dampingFraction:blendDuration:)
  • Пружините са стилът на анимация по подразбиране на SwiftUI от iOS 17
  • Прекъснатите пружини запазват скоростта си, така че жестовете се предават плавно

SwiftUI анимира промени в състоянието. Когато стойност като isExpanded се промени вътре с Animation(.spring), всеки изглед, който зависи от нея, се премества към новото си оформление с помощта на пружина.

В iOS 17 и по-нови версии най-простият начин да се опише пружина е с две стойности: продължителност, приблизително колко време отнема да се установи, и отскачане, колко превишава. Отскок от 0 дава плавно движение без превишаване; по-високите стойности добавят отскок. Apple също предоставя предварително зададени настройки: .smooth, .nappy и .bouncy.

По-старият код използва .spring(response:dampingFraction:). Реакцията е подобна на продължителността и затихваща част от 1 означава липса на отскачане, докато по-ниските стойности добавят отскачане. И двете форми описват една и съща физическа пружина.

Голямото предимство на пружините е прекъсването. Ако потребител докосне отново или жест с плъзгане сложи край на анимацията, новата пружина започва от текущата позиция и скорост, така че няма скок. За жестове с плъзгане предайте скоростта на жеста, когато потребителят пусне, така че елементът да продължи в посоката, в която е бил хвърлен.

Ако същият компонент също трябва да работи в мрежата или Android, запазването на пружинните стойности като споделени токени за движение помага. ExodeUI, който правим, има време за изпълнение SwiftUI, така че един проектиран компонент със своите пружини може да играе в SwiftUI и на други платформи.

Често задавани въпроси

Каква е анимацията по подразбиране в SwiftUI?

От iOS 17 анимацията по подразбиране е плавна пружина.

Каква е разликата между .snappy и .bouncy?

.snappy се установява бързо с малко превишаване; .подскачащи превишава повече. .smooth няма превишаване.

Как да преобразувам response и dampingFraction в duration и bounce?

Отговорът грубо се съобразява с продължителността. Демпфираща част от 1 е отскок 0; по-ниските фракции на затихване означават повече отскок.

Как да добавя скорост от жест с плъзгане?

Прочетете скоростта, когато плъзгането приключи, и използвайте интерполираща пружина или по-новите API на пружината, които приемат начална скорост.

Свързани ръководства и примери

Настройте пружина, преди да пишете код

Плъзнете плъзгачите, наблюдавайте движението и копирайте пролетните стойности за SwiftUI, CSS и други платформи.

Отворете пружинния генератор
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 →