Czy istnieje sposób, aby uzyskać efekt przejścia / animacji podczas zastępowania istniejącego kontrolera widoku jako rootviewcontroller nowym w appDelegate?
objective-c
ios
xcode
cocoa-touch
Jefferson
źródło
źródło
newViewController.view.layoutIfNeeded()
przed blokiem animacji rozwiązuje problemy z leniwie ładowanymi elementami.Znalazłem to i działa idealnie:
w swojej aplikacji
w Twojej aplikacji
kredyty:
źródło
Wysyłam odpowiedź Jezusa zaimplementowaną szybko. Pobiera identyfikator viewcontrollera jako argument, ładuje z storyboardu pożądanegoViewController i zmienia rootViewController z animacją.
Aktualizacja Swift 3.0:
Aktualizacja Swift 2.2:
Potem masz bardzo proste użycie z dowolnego miejsca:
Aktualizacja Swift 3.0
źródło
Szybki 2
Swift 3, 4, 5
źródło
po prostu spróbuj tego. U mnie działa dobrze.
EDYTOWAĆ:
Ten jest lepszy.
źródło
UIViewAnimationOptionAllowAnimatedContent|UIViewAnimationOptionLayoutSubviews
lub użyj pierwszej wersji lub innej metody.Aby później w aplikacji nie mieć problemów z przejściem, dobrze jest usunąć również stary widok ze stosu
źródło
Prawidłowa odpowiedź brzmi: nie musisz wymieniać
rootViewController
okna. Zamiast tego utwórz niestandardowyUIViewController
, przypisz go raz i pozwól mu wyświetlać jeden kontroler podrzędny na raz i zastąp go animacją, jeśli to konieczne. Możesz użyć następującego fragmentu kodu jako punktu wyjścia:Swift 3.0
A sposób, w jaki go używasz, to:
Powyższy przykład pokazuje, że możesz zagnieżdżać się w
UINavigationController
środkuFrameViewController
i to działa dobrze. Takie podejście zapewnia wysoki poziom dostosowywania i kontroli. Po prostu zadzwoń wFrameViewController.display(_)
dowolnym momencie, gdy chcesz wymienić kontroler root w swoim oknie, a on wykona tę pracę za Ciebie.źródło
To jest aktualizacja dla Swift 3, ta metoda powinna znajdować się w delegacie aplikacji i wywołać ją z dowolnego kontrolera widoku za pośrednictwem udostępnionego wystąpienia delegata aplikacji
Częścią, której brakuje w różnych pytaniach powyżej, jest
Mam nadzieję, że to komuś pomoże.
źródło
w AppDelegate.h:
w kontrolerze:
źródło
Proponuję sposób, w jaki działa dobrze w moim projekcie i oferuje mi dobre animacje. Przetestowałem inne propozycje znalezione w tym poście, ale niektóre z nich nie działają zgodnie z oczekiwaniami.
źródło
Ładna, słodka animacja (testowana ze Swift 4.x):
Zadzwoń z
źródło