だから私はこのスレッドをフォローしました: RootViewController Switch Transition Animation window.rootViewControllerをAからBにCに移行します。コードは次のようになります:
[UIView transitionWithView:self.window
duration:0.5
options: UIViewAnimationOptionTransitionFlipFromLeft
animations:^{
self.window.rootViewController = newViewController;
}
completion:nil];
問題は、私のアプリが横向きのみをサポートすることですが、rootViewControllerの移行中、新しいビューコントローラは縦向きモードで表示され、すぐに横向きモードに回転します。
きっと:
他の理由は何でしょうか?
同じ問題が何度も発生したので、今すぐ調べました。私はランダムに次のことを試しましたが、完全に機能しました。
[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];
アニメーションブロック内のアニメーションを無効化/有効化するのは少し奇妙ですが、クロスディゾルブはアニメーション化し、回転はしません-ビューコントローラーは既に回転しており、回転する準備ができています。
別のアニメーションオプションUIViewAnimationOptionAllowAnimatedContent
を入力するだけです。
[UIView transitionWithView:self.window duration:0.5 options:(UIViewAnimationOptionTransitionFlipFromLeft | UIViewAnimationOptionAllowAnimatedContent) animations:^{
self.window.rootViewController = newViewController;
} completion:nil];