您好我正在开发小型IOS应用程序,其中我使用带导航控制器的简单窗口。我想要做的是将状态栏颜色更改为白色。为此我做了以下事情。
[self.navigationController.navigationBar setBarTintColor:[UIColor redColor]];
[self.navigationController.navigationBar setBarStyle:UIBarStyleBlackTranslucent];
[self.navigationController.navigationBar setTintColor:[UIColor whiteColor]];
工作正常。
但现在我不想要导航栏并将其隐藏self.navigationController.navigationBarHidden = YES;
它会删除导航栏,但它不会将该白色主题应用于我的状态栏。它又变成了黑色。
我不想要导航栏,但我想将状态栏内容更改为白色。这该怎么做。需要帮忙。谢谢。
答案 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之前的那样。
答案 3 :(得分:0)
您应该使用:
self.navigationController.navigationBar.hidden = YES;
而不是:
self.navigationController.navigationBarHidden = YES;
如果NavigationBar
是UIViewController
的子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;