UINavigationBar 外观 setBackgroundImage 隐藏状态栏

Posted

技术标签:

【中文标题】UINavigationBar 外观 setBackgroundImage 隐藏状态栏【英文标题】:UINavigationBar appearance setBackgroundImage Hides Status Bar 【发布时间】:2013-12-13 18:19:44 【问题描述】:
UIImage *gradientImage46 = [[UIImage imageNamed:@"navbar.png"]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];


 [UINavigationBar appearance] setBackgroundImage:gradientImage46
                                           forBarMetrics:UIBarMetricsDefault];

我正在使用它来自定义我的应用中导航栏的外观。但是,这会导致状态栏一直显示为黑色,什么也没有显示...时间、运营商、电池等。这是一个错误,还是我实现的不正确?

我使用 MainWindow.xib 方法在选项卡栏中运行此界面。第一个选项卡只是一个导航控制器,里面有一个视图控制器。另一个选项卡是一个导航控制器,里面有一个 TableView 控制器。如果我从一个选项卡转到表格视图,然后返回,就会出现状态栏。

navbar.png 为 320 x 44 像素。

【问题讨论】:

【参考方案1】:

将我的应用程序从 ios 6 升级到 iOS7 时,我也遇到了这个问题,我通过以下方式更改代码解决了:

改为

[UINavigationBar appearance] setBackgroundImage:gradientImage46
                                       forBarMetrics:UIBarMetricsDefault];

我用

-(void) viewWillAppear:(BOOL)animated 

  [self.navigationController.navigationBar setBackgroundImage:gradientImage46 forBarMetrics:UIBarMetricsDefault];

【讨论】:

这行得通,只是希望我知道为什么它在视图控制器引用另一个 NIB 时有效,但如果视图构建在同一个接口内则不行。

以上是关于UINavigationBar 外观 setBackgroundImage 隐藏状态栏的主要内容,如果未能解决你的问题,请参考以下文章

自定义 UINavigationBar 外观以在 CNContactPickerViewController 中显示

在iOS 11中忽略设置UINavigationBar外观

UINavigationBar 外观 setBackgroundImage 隐藏状态栏

UINavigationbar 通过外观设置阴影不起作用

UINavigationBar 外观刷新?

为所有导航栏 (UINavigationBar) iOS 5.1+ 设置按钮和外观