隐藏导航栏、显示导航栏

Posted

技术标签:

【中文标题】隐藏导航栏、显示导航栏【英文标题】:Hide navigationBar, Show navigationBar 【发布时间】:2012-08-23 14:25:16 【问题描述】:

我遇到了一个问题。一开始是来自 AppDelegate 的一些代码。

 - (void)HideMainNavigationBar
navigCtrl.navigationBarHidden = YES;


- (void)ShowMainNavigationBar
navigCtrl.navigationBarHidden = NO;

navigCtrl 是我的导航控制器。 在我的另一个视图控制器中,我需要隐藏我的导航栏,然后显示它,以正确显示它。

- (void) moviePlayerWillExitFullScreen:(id)sender 
   NSLog(@"exitfullscreen");
   AppDelegate *ptr = [AppDelegate SharedAppDelegate];
   [ptr HideMainNavigationBar];
   [ptr ShowMainNavigationBar];

在那之后,我看到了返回按钮,而不是我的自定义 tabBarButton:

点击后退按钮后,它消失了,我再次看到我的导航栏和我的自定义按钮。在 ios 5.1 中检测到此“错误”,在 iOS 4.3.2 上一切正常。

这让我发疯了,请帮忙。

附:我知道,我可以使用:

self.navigationController.navigationBar.frame = CGRectMake(0, 20, self.navigationController.navigationBar.frame.size.width, self.navigationController.navigationBar.frame.size.height);

要正确显示导航栏,但我需要在旋转 VideoPlayer 时显示/隐藏导航栏以隐藏它。

有什么想法吗? 等待您的答复,谢谢。

【问题讨论】:

如果一定要一直隐藏,有没有尝试在 viewWillAppear 中隐藏? moviePlayer全屏时必须隐藏,因为我在旋转时看到它。 【参考方案1】:

因此,经过一些操作后,我决定简单地将 alpha 设置为我的导航栏。

if (SYSTEM_VERSION_LESS_THAN(@"5"))  
            [ptr HideMainNavigationBar];
else self.navigationController.navigationBar.alpha = 0;

我希望它对某人有用。再见。

【讨论】:

【参考方案2】:

我刚刚在 github 上发布了专门用于 UINavigationBar 外观管理的代码。查看RRViewControllerExtension,它将优雅地解决您的问题。

【讨论】:

以上是关于隐藏导航栏、显示导航栏的主要内容,如果未能解决你的问题,请参考以下文章

vue中导航栏的显示和隐藏

隐藏导航栏、显示导航栏

导航栏显示/隐藏

在导航栏折叠时隐藏的导航栏中显示图像

iOS解决隐藏导航栏后,打开照片选择器后导航栏不显示的问题以及更换导航栏背景色

搜索显示控制器如何隐藏导航栏?