コントローラー A からコントローラー B へのカスタム プッシュ トランジションを実行しています。コントローラー A では、ナビゲーション バーは非表示ですが、コントローラー B では表示されます。カスタム トランジションを実行すると、ナビゲーション バーがトランジションの最初にすぐに表示されます。どうすればこれを防ぐことができますか?
以下にいくつかのコードを示します。
コントローラー A では、次のコードでナビゲーション バーが非表示になります。
- (void)viewWillAppear:(BOOL)animated
{
[self.navigationController setNavigationBarHidden:YES animated:NO];
[super viewWillAppear:animated];
}
また、コントローラー A では、次のコードを使用してカスタム プッシュ トランジションを開始しています。
{
...
NOZViewController *vc = (NOZViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"gameController"];
[self.navigationController pushViewController:vc animated:YES ];
}
カスタム トランジションが開始されるとすぐに、コントローラー B のナビゲーション バーが表示されます。トランジション用のカスタム アニメーション コードのスナップショットを取得する方法は次のとおりです。
{
...
NOZMainViewController *fromViewCtrl =
(NOZMainViewController *)[transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
UIView *fromSnapshot = [fromViewCtrl.view snapshotViewAfterScreenUpdates:NO];
NOZViewController *toViewCtrl =
(NOZViewController *)[transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
UIView *toViewSnapshot = [toViewCtrl.view snapshotViewAfterScreenUpdates:YES];
....
}