Co jest uważane za najlepszą praktykę dotyczącą animowania przejść widoków na iPhonie?
Na przykład ViewTransitions
przykładowy projekt firmy Apple używa kodu takiego jak:
CATransition *applicationLoadViewIn = [CATransition animation];
[applicationLoadViewIn setDuration:1];
[applicationLoadViewIn setType:kCATransitionReveal];
[applicationLoadViewIn setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
[[myview layer] addAnimation:applicationLoadViewIn forKey:kCATransitionReveal];
ale w sieci krążą też fragmenty kodu, które wyglądają tak:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.75];
[UIView setAnimationDelegate:self];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:myview cache:YES];
[myview removeFromSuperview];
[UIView commitAnimations];
Jakie jest najlepsze podejście? Byłoby bardzo mile widziane, gdybyś mógł również podać fragment kodu.
UWAGA: nie udało mi się uzyskać drugiego podejścia do prawidłowego działania.
iphone
ios
cocoa-touch
uiview
core-animation
Keith Fitzgerald
źródło
źródło
UIView
zamiast tego użyć animacji blokowych . Są zasadniczo takie same jakbeginAnimations
i przyjaciele, ale używają funkcji blokowania / zamykania.[UIView transitionWithView:mysuperview duration:0.75 options:UIViewAnimationTransitionFlipFromRight animations:^{ [myview removeFromSuperview]; } completion:nil]
Sprawdź dokumentację UIView, aby uzyskać szczegółowe informacje.Używałem tego ostatniego do wielu fajnych, lekkich animacji. Możesz go użyć do przenikania dwóch widoków, zanikania jednego przed drugim lub wygaszania. Możesz sfotografować widok na inny jak baner, możesz rozciągnąć lub zmniejszyć widok ... Dostaję dużo kilometrów z
beginAnimation
/commitAnimations
.Nie myśl, że wszystko, co możesz zrobić, to:
Oto próbka:
Jak widać, możesz bawić się alfa, ramkami, a nawet rozmiarami widoku. Grać. Możesz być zaskoczony jego możliwościami.
źródło
Wydaje się, że różnica polega na stopniu kontroli nad animacją.
Takie
CATransition
podejście zapewnia większą kontrolę, a tym samym więcej rzeczy do skonfigurowania, np. funkcja pomiaru czasu. Będąc obiektem, możesz go przechowywać na później, refaktoryzować, aby kierować na niego wszystkie animacje, aby zredukować zduplikowany kod itp.Te
UIView
metody są metodami klasy wygoda dla typowych animacji, ale są bardziej ograniczone niżCATransition
. Na przykład istnieją tylko cztery możliwe typy przejść (odwróć w lewo, odwróć w prawo, zawiń w górę, zawiń w dół). Jeśli chciałbyś wprowadzić fade in, musiałbyś albo zagłębić się w dół, żebyCATransition's
przejść do fade, albo ustawić wyraźną animację swojejUIView
alfa.Zauważ, że
CATransition
w systemie Mac OS X pozwoli ci określić dowolnyCoreImage
filtr do użycia jako przejście, ale w obecnej postaci nie możesz tego zrobić na iPhonie, którego brakujeCoreImage
.źródło
Możemy animować obrazy w iOS 5 za pomocą tego prostego kodu.
źródło
W
UIView
Dokumentach masz przeczytać o tej funkcji dla iOS4 +źródło
W każdym razie metoda „blokowania” jest preferowana teraz-dni. Poniżej wyjaśnię prosty blok.
Rozważ wycięte poniżej. bug2 i bug 3 to imageViews. Poniższa animacja opisuje animację trwającą 1 sekundę z opóźnieniem 1 sekundy. Bug3 został przeniesiony ze środka do środka bug2. Po zakończeniu animacji zostanie zarejestrowana jako „Center Animation Done!”.
Mam nadzieję, że to czyste !!!
źródło
Oto animacja Code for Smooth, która może być pomocna dla wielu programistów.
Znalazłem ten fragment kodu z tego samouczka.
źródło
spróbujmy i sprawdźmy Swift 3 ...
źródło