在基于UINavigationController的应用程序中切换UIStatusBar颜色(黑色/白色)



在我的应用程序中,我使用多种颜色(基于主题)作为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];
}

最新更新