0Pricing
Swift Academy · Lekcja

Animacje niejawne i jawne

Animowanie właściwości warstw za pomocą CABasicAnimation.

Animacje niejawne i jawne to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 2 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 sposoby animowania warstw

Core Animation oferuje animacje niejawne (uruchamiane automatycznie po zmianie właściwości) oraz animacje jawne (w których tworzą Państwo obiekt animacji).

Znajomość obu sposobów oraz ich wzajemnego działania jest kluczowa dla płynnego ruchu.

Animacje niejawne

Zmiana właściwości warstwy animowalnej w warstwie niezależnej uruchamia animację niejawną z domyślną krzywą trwającą 0,25 s — obiekt animacji nie jest wymagany.

let layer = CALayer()
// Later, this animates automatically:
layer.opacity = 0.0

Właściwości animowalne

Wiele właściwości warstwy można animować: opacity, position, bounds, backgroundColor, transform, cornerRadius i inne.

layer.cornerRadius = 20 // animates implicitly
layer.backgroundColor = UIColor.systemGreen.cgColor

Akcje i mechanizm akcji

Animacje niejawne są sterowane przez akcje. Gdy właściwość ulega zmianie, warstwa wyszukuje akcję CAAction do uruchomienia. Można dostosować te akcje albo je wyłączyć.

Warstwy powiązane z widokami wyłączają animacje niejawne

Warstwy powiązane z obiektem UIView mają wyłączone animacje niejawne. Należy animować je za pomocą UIView.animate albo animacji jawnych.

UIView.animate(withDuration: 0.3) {
    view.alpha = 0
}

CABasicAnimation

CABasicAnimation animuje jedną właściwość między wartościami fromValue i toValue. Należy dodać ją do warstwy ze ścieżką klucza odpowiadającą właściwości.

let anim = CABasicAnimation(keyPath: "opacity")
anim.fromValue = 1.0
anim.toValue = 0.0
anim.duration = 0.5
layer.add(anim, forKey: "fade")

Warstwa prezentacji a model

Animacja jawna zmienia tylko wartości warstwy prezentacji (wyświetlane na ekranie); wartość modelu warstwy powraca do poprzedniego stanu po zakończeniu animacji.

Aby zachować zmianę, należy ustawić również wartość modelu.

layer.opacity = 0.0 // set model value so it persists
layer.add(anim, forKey: "fade")

Animacje klatkowe

CAKeyframeAnimation animuje wiele wartości values w czasie określonym przez keyTimes albo wzdłuż path — doskonale nadaje się do odbić lub ruchu po krzywych.

let move = CAKeyframeAnimation(keyPath: "position")
move.values = [
    NSValue(cgPoint: CGPoint(x: 0, y: 0)),
    NSValue(cgPoint: CGPoint(x: 100, y: 0)),
    NSValue(cgPoint: CGPoint(x: 100, y: 100))
]
move.duration = 1.0
layer.add(move, forKey: "path")

Funkcje synchronizacji

Przyspieszeniem można sterować za pomocą timingFunction: ease-in, ease-out, liniowej funkcji lub własnej krzywej Béziera.

anim.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut)

Grupowanie i transakcje

Wiele zmian można opakować w CATransaction, aby współdzieliły czas trwania i synchronizację, albo aby całkowicie wyłączyć animacje niejawne.

CATransaction.begin()
CATransaction.setDisableActions(true)
layer.position = CGPoint(x: 200, y: 200)
CATransaction.commit()

Delegaty animacji i zakończenie

Należy ustawić CATransaction.setCompletionBlock albo delegata animacji, aby uruchomić kod po zakończeniu ruchu — na przykład w celu posprzątania, połączenia animacji lub aktualizacji stanu.

CATransaction.begin()
CATransaction.setCompletionBlock { print("done") }
layer.add(anim, forKey: "fade")
CATransaction.commit()

Szybki test: animacje

Proszę sprawdzić swoją wiedzę na temat animacji niejawnych i jawnych.

Podsumowanie: animacje niejawne i jawne

Niezależne warstwy animują się niejawnie za pośrednictwem akcji po zmianie animowalnych właściwości; warstwy powiązane z widokami wyłączają ten mechanizm i korzystają z UIView.animate. Jawne animacje CABasicAnimation i CAKeyframeAnimation animują wartość prezentacji, dlatego aby zachować rezultat, należy zaktualizować również wartość modelu.

Ruchem można sterować za pomocą funkcji synchronizacji, grupować zmiany w CATransaction oraz używać bloków końcowych do wykonywania kolejnych operacji.

Często zadawane pytania

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

Tak — pełny tekst „Animacje niejawne i 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 i jawne”?

Animowanie właściwości warstw za pomocą CABasicAnimation. Ć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 2 z 4.

Ile czasu zajmuje lekcja „Animacje niejawne i 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. Podstawy CALayer
  2. Animacje niejawne i jawne
  3. Przekształcenia i efekty 3D
  4. Niestandardowe rysowanie za pomocą Core Graphics
← Powrót do Swift Academy