更改IOS 7状态栏内容颜色

时间:2014-04-28 09:37:18

标签: ios uinavigationbar statusbar

您好我正在开发小型IOS应用程序,其中我使用带导航控制器的简单窗口。我想要做的是将状态栏颜色更改为白色。为此我做了以下事情。

[self.navigationController.navigationBar setBarTintColor:[UIColor redColor]];
[self.navigationController.navigationBar setBarStyle:UIBarStyleBlackTranslucent];
[self.navigationController.navigationBar setTintColor:[UIColor whiteColor]];

工作正常。enter image description here

但现在我不想要导航栏并将其隐藏self.navigationController.navigationBarHidden = YES;

它会删除导航栏,但它不会将该白色主题应用于我的状态栏。它又变成了黑色。

enter image description here

我不想要导航栏,但我想将状态栏内容更改为白色。这该怎么做。需要帮忙。谢谢。

4 个答案:

答案 0 :(得分:3)

使用UIStatusBarStyleLightContent

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];

另外,将PLIST文件中的UIViewControllerBasedStatusBarAppearance更改为NO

注意:之前已经提出过这个问题。请对this等问题进行更多研究。

答案 1 :(得分:1)

您可以在状态栏上设置带有颜色的UIView,请检查:

UIView *temporaryStatusBar = [[UIView alloc] initWithFrame:[[UIApplication sharedApplication] statusBarFrame]];
temporaryStatusBar.backgroundColor = [UIColor greenColor];
[self.window addSubview:temporaryStatusBar];

答案 2 :(得分:0)

这可以简单地完成。请查看这些StackOverflow链接以查看最适合您的链接。我的建议是看更多。默认情况下,状态栏在iOS 7中是透明的,因此我们需要应用这些程序使其看起来像iOS 7之前的那样。

Status bar and navigation bar issue in IOS7

How to set Status bar background color iOS 7

答案 3 :(得分:0)

您应该使用:

self.navigationController.navigationBar.hidden = YES;

而不是:

self.navigationController.navigationBarHidden = YES;
如果NavigationBarUIViewController的子viewController,则

UINavigationController隐藏行为可能会很奇怪。

Bellow评论是@Tyson和@ ing0在此answer中的研究: 对于任何使用UINavigationController的人:

  

UINavigationController未转发   preferredStatusBarStyle调用其子视图控制器。代替   它管理自己的状态 - 正如它应该的那样,它正在绘制在顶部   状态栏所在的屏幕应该负责   它。因此,在您的VC中实施preferredStatusBarStyle   导航控制器什么都不做 - 永远不会被调用。

     

诀窍是UINavigationController用来决定做什么的诀窍   返回UIStatusBarStyleDefault或   UIStatusBarStyleLightContent。它以此为基础   UINavigationBar.barStyle。默认(UIBarStyleDefault)结果   在黑暗的前景UIStatusBarStyleDefault状态栏中。和   UIBarStyleBlack会提供UIStatusBarStyleLightContent状态   杆

     

TL; DR:

     

如果你想要UIStatusBarStyleLightContent   UINavigationController使用:

self.navigationController.navigationBar.barStyle = UIBarStyleBlack;