在 iOS 7 中使用 Tint Color 显示导航栏时白色状态栏消失
Posted
技术标签:
【中文标题】在 iOS 7 中使用 Tint Color 显示导航栏时白色状态栏消失【英文标题】:White status bar disappears when Navigation bar is visible with Tint Color in iOS 7 【发布时间】:2013-10-13 14:27:16 【问题描述】:我有 2 个UIViewControllers
。在第一个UIViewController
中,比如ViewController1
,我将UINavigationBar
隐藏起来。由于我的应用程序的主题是黑色,所以我需要在ios 7
中使用白色UIStatusBar
,这样它就不会在黑色UINavigationBar
中变得不可见。为了变白UIStatusBar
,我在iOS 7
使用这个方法。
-
将
plist
中的UIViewControllerBasedStatusBarAppearance
设置为YES
在viewDidLoad
做一个[self
setNeedsStatusBarAppearanceUpdate];
添加如下方法:
-(UIStatusBarStyle)preferredStatusBarStyle
return UIStatusBarStyleLightContent;
当我在 ViewController1 时它工作正常。但是当我移动到 ViewController2 时,如果我设置了
self.navigationController.navigationBarHidden = NO
在我的viewDidLoad
方法中。然后上面的白色UIStatusBar
代码不起作用。 UIStatusBar
变黑了我看不到,因为我正在使用以下代码自定义我的UINavigationBar
self.navigationController.navigationBar.barTintColor = [UIColor blackColor];
self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAttributeTextColor];
self.navigationController.navigationBar.translucent = NO;
如果我像 ViewController1 一样将UINavigationBar
隐藏起来,那么白色的UIStatusBar
将再次可见。但是当UINavigationBar
可见时,状态栏会再次变黑。这就是问题所在。
任何人都可以在这种情况下帮助我,我怎样才能获得像我的 ViewController1 这样的白色状态栏? 提前致谢。
【问题讨论】:
This answer 可能会有所帮助。 【参考方案1】:您是否尝试将其添加到两个视图控制器中
-(UIStatusBarStyle)preferredStatusBarStyle
return UIStatusBarStyleLightContent;
【讨论】:
【参考方案2】:您可能只是缺少 plist 上所需的属性:查看基于控制器的状态栏外观为 NO。
编辑:查看@caglar 对先前答案的评论,以获得对一般需求的更全面的答案。
【讨论】:
以上是关于在 iOS 7 中使用 Tint Color 显示导航栏时白色状态栏消失的主要内容,如果未能解决你的问题,请参考以下文章
IOS 7.1 中的 UISegmentedControl Buggy Tint 颜色
将 NavigationBar Tint/Color 更改为 Navigation Stack 中每个 ViewController 的不同值