¿Hay alguna forma de tener un efecto de transición / animación mientras se reemplaza un viewcontroller existente como rootviewcontroller por uno nuevo en appDelegate?
objective-c
ios
xcode
cocoa-touch
Jefferson
fuente
fuente
newViewController.view.layoutIfNeeded()
antes del bloque de animación corrige problemas con elementos cargados de manera perezosa.Encontré esto y funciona perfectamente:
en su aplicación Delegue:
en tu aplicación
créditos:
fuente
Estoy publicando la respuesta de Jesús implementada en Swift. Toma el identificador de viewcontroller como argumento, se carga desde el storyboard deseado ViewController y cambia rootViewController con animación.
Actualización de Swift 3.0:
Actualización de Swift 2.2:
Después, tiene un uso muy simple desde cualquier lugar:
Actualización de Swift 3.0
fuente
Swift 2
Swift 3, 4, 5
fuente
solo prueba esto. Funciona bien para mi.
EDITAR:
Éste es mejor.
fuente
UIViewAnimationOptionAllowAnimatedContent|UIViewAnimationOptionLayoutSubviews
o use la primera versión o algún otro método.Para no tener problemas con el cambio de transición más adelante en la aplicación, también es bueno borrar la vista anterior de la pila
fuente
La respuesta correcta es que no necesita reemplazar el
rootViewController
en su ventana. En su lugar, cree una personalizadaUIViewController
, asígnela una vez y deje que muestre un controlador secundario a la vez y reemplácela con animación si es necesario. Puede usar el siguiente código como punto de partida:Swift 3.0
Y la forma en que lo usas es:
El ejemplo anterior demuestra que puede anidar en el
UINavigationController
interiorFrameViewController
y que funciona bien. Este enfoque le brinda un alto nivel de personalización y control. Simplemente llame enFrameViewController.display(_)
cualquier momento que desee reemplazar el controlador raíz en su ventana, y hará ese trabajo por usted.fuente
Esta es una actualización para swift 3, este método debe estar en el delegado de su aplicación, y puede llamarlo desde cualquier controlador de vista, a través de una instancia compartida del delegado de la aplicación
La parte que falta en varias preguntas anteriores, es
Espero que esto ayude a alguien.
fuente
en AppDelegate.h:
en su controlador:
fuente
Propongo a mi manera, que está funcionando bien en mi proyecto, y me ofrece buenas animaciones. He probado otras propuestas encontradas en esta publicación, pero algunas de ellas no funcionan como se esperaba.
fuente
Bonita y dulce animación (probada con Swift 4.x):
Llamar con
fuente