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 animationPriorytet 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
- Animacje niejawne a jawne
- matchedGeometryEffect dla przejść typu Hero
- Niestandardowy AnimatableModifier i Animatable
- TimelineView i Canvas do wydajnego rysowania