1

コントローラー 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];
    ....

}
4

1 に答える 1

0

ナビゲーションバーをアニメーションで非表示に設定し、ナビゲーションバー症候群の突然の出現を解決しました

- (void)viewWillDisappear:(BOOL)animated
{
    [self.navigationController setNavigationBarHidden:NO animated:YES];
    [super viewDidDisappear:animated];
}
于 2014-05-09T15:59:52.607 に答える