Existe-t-il un moyen d'avoir un effet de transition / animation tout en remplaçant un viewcontroller existant en tant que rootviewcontroller par un nouveau dans l'appDelegate?
objective-c
ios
xcode
cocoa-touch
Jefferson
la source
la source
newViewController.view.layoutIfNeeded()
avant le bloc d'animation corrige les problèmes avec les éléments chargés paresseusement.J'ai trouvé cela et fonctionne parfaitement:
dans votre applicationDelegate:
dans votre application
crédits:
la source
Je publie la réponse de Jésus mise en œuvre rapidement. Il prend l'identifiant de viewcontroller comme argument, se charge à partir du storyboard désiréViewController et change rootViewController avec une animation.
Mise à jour Swift 3.0:
Mise à jour Swift 2.2:
Après, vous avez une utilisation très simple de n'importe où:
Mise à jour Swift 3.0
la source
Swift 2
Swift 3, 4, 5
la source
essayez juste ceci. Fonctionne bien pour moi.
ÉDITER:
Celui ci est mieux.
la source
UIViewAnimationOptionAllowAnimatedContent|UIViewAnimationOptionLayoutSubviews
, ou utilisez la première version ou une autre méthode.Afin de ne pas avoir de problèmes avec le basculement de transition plus tard dans l'application, il est bon d'effacer également l'ancienne vue de la pile.
la source
La bonne réponse est que vous n'avez pas besoin de remplacer le
rootViewController
sur votre fenêtre. Au lieu de cela, créez une personnalisationUIViewController
, attribuez-la une fois et laissez-la afficher un contrôleur enfant à la fois et remplacez-la par une animation si nécessaire. Vous pouvez utiliser le morceau de code suivant comme point de départ:Swift 3.0
Et la façon dont vous l'utilisez est:
L'exemple ci-dessus montre que vous pouvez imbriquer à l'
UINavigationController
intérieurFrameViewController
et que cela fonctionne très bien. Cette approche vous offre un niveau élevé de personnalisation et de contrôle. Appelez simplement àFrameViewController.display(_)
chaque fois que vous souhaitez remplacer le contrôleur racine de votre fenêtre, et il fera ce travail pour vous.la source
Ceci est une mise à jour pour swift 3, cette méthode doit être dans votre délégué d'application, et vous l'appelez depuis n'importe quel contrôleur de vue, via une instance partagée du délégué d'application
La partie qui manque aux diverses questions ci-dessus est
J'espère que cela aide quelqu'un.
la source
dans AppDelegate.h:
dans votre contrôleur:
la source
Je propose à ma façon que cela fonctionne bien dans mon projet, et il me propose de bonnes animations. J'ai testé d'autres propositions trouvées dans cet article, mais certaines d'entre elles ne fonctionnent pas comme prévu.
la source
Belle animation douce (testée avec Swift 4.x):
Appeler avec
la source