0Pricing
Swift Academy · Lekcja

Animacje niejawne a jawne

Używanie modyfikatora .animation() i bloku withAnimation {} w różnych zastosowaniach.

Animacje niejawne a jawne to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 4 lekcji w sumie.

Dwa style animacji

SwiftUI obsługuje animacje niejawne (modyfikator .animation) oraz animacje jawne (blok withAnimation).

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

Animacja niejawna z użyciem .animation

Dołączenie .animation(_:value:) do widoku powoduje jego animowanie za każdym razem, gdy zmieni się powiązana wartość.

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

Uruchamianie animacji niejawnej

Każda zmiana stanu wpływająca na widok automatycznie uruchamia zdefiniowaną dla niego animację niejawną.

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

Animacja jawna z użyciem withAnimation

withAnimation opakowuje zmianę stanu i jednocześnie animuje wszystkie wynikające z niej zmiany widoku.

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

Animowanie wielu właściwości

withAnimation sprawdza się lepiej, gdy kilka zmian stanu ma być zsynchronizowanych i animowanych jako jedna transakcja.

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

Typy animacji

Swift udostępnia animacje typu spring, easeIn, easeOut, easeInOut, linear oraz animacje z niestandardową krzywą czasową.

.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)

Wyłączanie animacji

Przekaż .animation(.none, value:) lub opakuj zmiany w withAnimation(nil), aby wybiórczo wyłączyć animację.

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

Priorytet animacji

Jawne withAnimation ma pierwszeństwo przed niejawnymi modyfikatorami .animation w widokach podrzędnych.

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

Powtarzające się animacje

Użyj .repeatForever lub .repeatCount do tworzenia zapętlonych animacji, takich jak efekty pulsowania.

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

Opóźnienie i szybkość

Animacje można łączyć za pomocą modyfikatorów .delay i .speed stosowanych do wartości animacji.

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

Wybór między animacją niejawną a jawną

Animacji niejawnej należy używać w przypadku animacji pojedynczego widoku powiązanej z jedną wartością, a jawnej — podczas koordynowania wielu właściwości lub widoków.

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

Szybkie sprawdzenie

Które podejście najlepiej koordynuje jednoczesne animowanie wielu właściwości stanu?

Podsumowanie lekcji

Animacje niejawne (.animation(_:value:)) automatycznie reagują na zmiany wartości w pojedynczym widoku. Animacje jawne (withAnimation {}) koordynują wiele mutacji. W przypadku złożonych efektów można je łączyć z .delay, .speed i .repeatForever.

Często zadawane pytania

Czy lekcja „Animacje niejawne a jawne” jest bezpłatna?

Tak — pełny tekst „Animacje niejawne a jawne” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Animacje niejawne a jawne”?

Używanie modyfikatora .animation() i bloku withAnimation {} w różnych zastosowaniach. Ćwiczysz Swift Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Swift Academy?

Nie wymagamy żadnego doświadczenia. Swift Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Animacje niejawne a jawne”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Swift Academy?

Tak. Każda lekcja Swift Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Animacje niejawne a jawne
  2. matchedGeometryEffect dla przejść typu Hero
  3. Niestandardowy AnimatableModifier i Animatable
  4. TimelineView i Canvas do wydajnego rysowania
← Powrót do Swift Academy