2012-10-18 100 views
5

我显然没有理解如何使用状态栏色调在IOS 6我已经阅读了这个问题: Change statusbar tint colour 但落实解决的建议,还没有解决这个问题。状态栏色调颜色变为黑色在iOS 6中

我已经在目标摘要窗格(样式和着色的默认设置)中配置了设置,并将状态栏色调参数字典添加到了我的info.plist中,如WWDC 2012高级外观自定义中所述。

我的状态栏在启动时色调正确,但是一旦我导航到另一个视图控制器,状态栏将变为黑色。

第二个视图控制器被嵌入到它自己的导航控制器中。这可能是问题的根源吗?

不管是什么原因,我希望有人能够提供一个解决方案,使我可以在整个应用程序中使我的状态栏保持一致。

请让我知道是否需要澄清,并提前感谢您的任何帮助。

回答

13

今天我遇到了同样的问题,但没有任何的sugested答案会帮助我。由于我定义了自己的颜色(红色,蓝色,绿色,alpha),我不想通过IB添加UIStatusBar,所以我需要一个单线解决方案。

测试了之后虽然下面的工作对我来说:

  1. 在项目摘要选择状态栏式的黑色Transculent从下拉菜单。
  2. application: didFinishLaunchingWithOptions:输入下面的代码行:

    self.window.backgroundColor = [UIColor redColor]; //example color

不知怎的,这不会对我在application: didFinishLaunchingWithOptions:

享受通过代码设置样式时,工作!

+1

谢谢,如果状态栏的样式设置为这样的话,这可以工作: application.statusBarStyle = UIStatusBarStyleBlackTranslucent。 – geraldWilliam

+0

感谢您的回复!你是对的,我会编辑我的答案! – pmk

+0

非常感谢!我已经担心我必须使用uinavigationbar方法,因为我使用多个导航栏并在它们之间切换导致状态栏颜色消失,所以我的项目会非常糟糕。这很好! – fellowworldcitizen

0

第二视图控制器嵌入在其自己的导航 控制器中。这可能是问题的根源吗?

这是最有可能的问题 - 但我也会认为plist条目会使它成为全球性的。 你是否尝试过使用UIAppearance(假设你只支持ios6 +)以编程方式设置它?

[[UITabBar appearance] setTintColor:[UIColor redColor]]; 
+0

如果我没有弄错,iOS 6中的状态栏从UINavigationBar派生它的色彩,而不是UITabBar。我已经使用外观协议设置了导航栏的外观(实际上它在iOS 5+中可用)。导航栏的自定义图像在整个应用程序中按预期显示。但是,在初始导航控制器从视图中移除后,状态栏无法从导航栏中获取色调。即使导航回到状态栏,状态栏仍为黑色。 – geraldWilliam

+0

对不起,你是正确的,它应该是UINavigationBar。 –

1

一种解决方案是在界面前放置一个不可见的导航栏。如果您已经在导航界面中,则可能必须继承UINavigationController。例如:

UINavigationBar* nav = [[UINavigationBar alloc] initWithFrame:CGRectMake(0,0,320,1)]; 
nav.tintColor = [UIColor redColor]; 
nav.alpha = 0; 
[self.navigationBar.superview addSubview:nav]; 

无论导航栏的色调或背景颜色如何,都会导致状态栏变为红色。这也适用于没有导航栏的情况。

信贷到期的贷方;我的想法是将alphahttps://stackoverflow.com/a/13587525/341994设置为0。