48 votes

RootViewController animation de la transition, l'orientation initiale est mal

J'ai donc suivi ce fil: RootViewController Commutateur Animation de Transition de transiter par la fenêtre.rootViewController de A à B à C. Code ressemble à ceci:

[UIView transitionWithView:self.window 
                  duration:0.5 
                   options: UIViewAnimationOptionTransitionFlipFromLeft 
                animations:^{
                               self.window.rootViewController = newViewController;
                } 
                completion:nil];

Le problème est que mon application ne soutien de paysage, mais au cours de la rootViewController de transition, le nouveau-vue-contrôleur s'affiche en mode portrait que rapidement faire pivoter en mode paysage.

Je suis sûr que:

  1. J'ai mis UISupportedOrientation paysage (la maison du bouton de droite)
  2. pour chaque viewcontroller, dans le shouldAutoRotateToOrientation méthode, j'ai mis seulement pour le paysage

Ce qui pourrait être l'autre raison?

119voto

Kalle Points 6804

J'ai regardé dans ce juste parce que j'ai continué à obtenir le même problème. Je aléatoirement essayé le suivant, et il a parfaitement fonctionné:

[UIView
    transitionWithView:window 
    duration:0.5
    options:UIViewAnimationOptionTransitionCrossDissolve
    animations:^(void) {
        BOOL oldState = [UIView areAnimationsEnabled];
        [UIView setAnimationsEnabled:NO];
        [(ICApp *)sharedApplication.delegate window].rootViewController = self;
        [UIView setAnimationsEnabled:oldState];
    } 
    completion:nil];

Je sais que c'est un peu bizarre pour désactiver/activer les animations à l'intérieur d'un bloc d'animation, mais la croix dissoudre l'anime, et la rotation n'est pas-la-vue-contrôleur apparaît déjà tourné et prêt à rouler.

9voto

Borut Tomazin Points 2196

Il suffit de mettre dans une autre animation option UIViewAnimationOptionAllowAnimatedContent:

[UIView transitionWithView:self.window duration:0.5 options:(UIViewAnimationOptionTransitionFlipFromLeft | UIViewAnimationOptionAllowAnimatedContent) animations:^{
    self.window.rootViewController = newViewController;
} completion:nil];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X