在基于 UINavigationController 的应用程序中切换 UIStatusBar 颜色 (black/white)
Switch between UIStatusBar color (black/white) in UINavigationController based app
在我的应用程序中,我使用多种颜色(基于主题)作为 UINavigationBar 的色调,用于一些浅色和一些深色。在 iOS7 及更高版本中,也会更改状态栏颜色。
对于浅色,可以使用默认状态栏文本颜色(黑色),但对于深色,我们需要使用浅色(白色)。
我已经尝试了很多基于不同答案的方法来做到这一点。这些是:
1. View controller-based status bar appearance
,但不适用于基于 UINavigationControler
的应用程序
2. Setting self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
将状态栏文本颜色设置为白色,但设置为白色后颜色不会变回黑色
它将如何运作?
要更改特定页面的颜色,您需要在整个应用程序范围内进行更改。当然,您可以在离开此页面后重新更新。
- (void) viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
// Do any additional setup after loading the view.
if ([tintColor isEqual:[UIColor blackColor]])
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault animated:YES];
else
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
}
- (void) viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:YES];
//set it back to default
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
}
在我的应用程序中,我使用多种颜色(基于主题)作为 UINavigationBar 的色调,用于一些浅色和一些深色。在 iOS7 及更高版本中,也会更改状态栏颜色。
对于浅色,可以使用默认状态栏文本颜色(黑色),但对于深色,我们需要使用浅色(白色)。
我已经尝试了很多基于不同答案的方法来做到这一点。这些是:
1. View controller-based status bar appearance
,但不适用于基于 UINavigationControler
的应用程序
2. Setting self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
将状态栏文本颜色设置为白色,但设置为白色后颜色不会变回黑色
它将如何运作?
要更改特定页面的颜色,您需要在整个应用程序范围内进行更改。当然,您可以在离开此页面后重新更新。
- (void) viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
// Do any additional setup after loading the view.
if ([tintColor isEqual:[UIColor blackColor]])
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault animated:YES];
else
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
}
- (void) viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:YES];
//set it back to default
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
}