iOS-UINavigationController-导航栏与UIViewController一起滑入

iOS-UINavigationController-导航栏与UIViewController一起滑入,ios,objective-c,iphone,uiviewcontroller,uinavigationcontroller,Ios,Objective C,Iphone,Uiviewcontroller,Uinavigationcontroller,我有两个UIViewController,A和B A正在隐藏UINavigationBar,B没有。 从A到B设置动画(使用默认动画)时,导航栏必须可见。导航栏只是在某个点弹出(ViewWillDisplay或ViewDidDisplay),而不是使用UIViewController B滑入 当从B返回到A时,导航栏将平滑地滑出 从A到B设置动画时,如何实现所需效果?您可以尝试以下方法: 使用实例变量执行此操作: self.navigationController setNavigationBa

我有两个UIViewController,A和B

A正在隐藏UINavigationBar,B没有。 从A到B设置动画(使用默认动画)时,导航栏必须可见。导航栏只是在某个点弹出(ViewWillDisplay或ViewDidDisplay),而不是使用UIViewController B滑入

当从B返回到A时,导航栏将平滑地滑出


从A到B设置动画时,如何实现所需效果?

您可以尝试以下方法:

使用实例变量执行此操作:

self.navigationController setNavigationBarHidden:hide animated:animated];
_shouldHideStatusBar = hide;
并实现以下功能:

- (BOOL)prefersStatusBarHidden{
    return _shouldHideStatusBar;
}
setNavigationBarHidden:animated函数将自动调用首选StatusBarHidden函数。如果没有,您可以使用以下UIViewController方法调用它:

[self setNeedsStatusBarAppearanceUpdate];
当然,您可以使用以下选项选择状态栏隐藏动画样式:

- (UIStatusBarAnimation) preferredStatusBarUpdateAnimation {
    return UIStatusBarAnimationSlide;
}
让我知道这是否有帮助。祝你好运


(我在这里得到了答案:)

在ViewController B中,只需执行以下操作:

-(void) viewWillAppear:(BOOL)animated {
     [super viewWillAppear: animated];
     [self.navigationController setNavigationBarHidden: NO animated: YES];
}

我不知道在进行全视图控制器转换时,这也会控制动画。我认为它只会控制导航栏的顶部和后部的动画。

声明时在AppDelegate方法中隐藏UINavigationBar,并在UIViewController B上取消隐藏。我认为您的问题会得到解决。@Horray,我认为您没有抓住重点。我不关心状态栏,我只是说导航栏。也许我弄错了,但我不知道这将如何解决我的问题。