Swift Academy · Lektion

Implicita kontra explicita animationer

Använd modifieraren .animation() eller blocket withAnimation {} för olika användningsfall.

Lektion 1 av 413 steg

Implicita kontra explicita animationer är en gratis lektion i Swift Academy på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Swift Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Swift Academy innehåller totalt 4 lektioner.

Två animationsstilar

SwiftUI stöder implicita animationer, modifieraren .animation, och explicita animationer, withAnimation-clousuren.

struct Demo: View {
  @State private var scale = 1.0
  var body: some View {
    Circle().scaleEffect(scale)
  }
}

Implicit animation med .animation

Om ni kopplar .animation(_:value:) till en vy animeras den varje gång det bundna värdet ändras.

Circle()
  .scaleEffect(scale)
  .animation(.easeInOut(duration: 0.3), value: scale)

Utlösa en implicit animation

Alla tillståndsändringar som påverkar vyn utlöser automatiskt den implicita animation som definierats för den.

Button("Grow") {
  scale = 2.0  // .animation fires automatically
}

Explicit animation med withAnimation

withAnimation omsluter en tillståndsändring och animerar alla resulterande vyändringar samtidigt.

Button("Animate") {
  withAnimation(.spring()) {
    scale = 2.0
    offset = 50
  }
}

Animera flera egenskaper

withAnimation passar bättre när ni vill animera flera tillståndsändringar synkroniserat som en enda transaktion.

withAnimation(.easeOut(duration: 0.5)) {
  isExpanded = true
  rotation = 90
  opacity = 0.5
}

Animationstyper

Swift tillhandahåller animationer med spring, easeIn, easeOut, easeInOut, linear och anpassade tidskurvor.

.spring(response: 0.4, dampingFraction: 0.6)
.easeInOut(duration: 0.3)
.linear(duration: 0.5)
.timingCurve(0.2, 0.8, 0.2, 1.0, duration: 0.4)

Inaktivera animation

Skicka .animation(.none, value:) eller omslut ändringar med withAnimation(nil) för att selektivt inaktivera animation.

Circle()
  .scaleEffect(scale)
  .animation(.none, value: scale)  // no animation

Animationsprioritet

En explicit withAnimation har företräde framför implicita .animation-modifierare på underordnade vyer.

withAnimation(.linear) {
  value = true  // linear wins over any .animation on subviews
}

Upprepade animationer

Använd .repeatForever eller .repeatCount för loopande animationer, till exempel pulserande effekter.

.animation(
  .easeInOut(duration: 0.8).repeatForever(autoreverses: true),
  value: pulsing
)

Fördröjning och hastighet

Kombinera animationer med modifierarna .delay och .speed på animationsvärdet.

.animation(.spring().delay(0.2).speed(1.5), value: flag)

Välja mellan implicit och explicit animation

Använd implicit animation för animationer av en enskild vy som är knutna till ett värde och explicit animation när ni samordnar flera egenskaper eller vyer.

// Implicit: simple, single view
.animation(.easeIn, value: isVisible)
// Explicit: multi-property or cross-view
withAnimation { a = 1; b = 2 }

Snabbkontroll

Vilket tillvägagångssätt samordnar bäst animeringen av flera tillståndsegenskaper samtidigt?

Lektionssammanfattning

Implicit animering (.animation(_:value:)) reagerar automatiskt på värdeändringar i en enskild vy. Explicit animering (withAnimation {}) samordnar flera ändringar. Kombinera med .delay, .speed och .repeatForever för komplexa effekter.

Gratis att börja

Lär dig Swift med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
122
Lektioner
409

Vanliga frågor

Är lektionen ”Implicita kontra explicita animationer” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Swift Academy, inklusive ”Implicita kontra explicita animationer”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Swift Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Implicita kontra explicita animationer”?

Använd modifieraren .animation() eller blocket withAnimation {} för olika användningsfall. Ni övar på Swift Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Swift Academy?

Du behöver inga förkunskaper. Utbildningen i Swift Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.

Hur lång tid tar lektionen ”Implicita kontra explicita animationer”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Swift Academy-lektionen?

Ja. Varje Swift Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Implicita kontra explicita animationer
  2. matchedGeometryEffect för hero-övergångar
  3. Anpassad AnimatableModifier och Animatable
  4. TimelineView och Canvas för högpresterande ritning
← Tillbaka till Swift Academy