在我的应用程序中,我使用多种颜色(基于主题)作为UINavigationBar的色调,用于一些亮和一些暗。在iOS7及以上版本中,状态栏的颜色也会改变。
对于浅色,可以使用默认的状态栏文本颜色(黑色),但对于深色,我们需要使用浅色(白色)。
我尝试了许多基于不同答案的方法,以做到这一点。以下是:
1. View controller-based status bar appearance
,但它不适用于基于UINavigationControler
的应用程序
2. 设置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];
}