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 回答