info.plist文件中有个一项:View controller-based status bar appearance:
当这里的值分别为YES,则以 ViewController 的设置为准,即通过preferredStatusBarStyle来设置状态栏。而 ViewController 对 status bar 的设置优先级高于 application 的设置。
#pragma mark - 状态栏
- (BOOL)prefersStatusBarHidden
{
return NO;
}
- (UIStatusBarStyle)preferredStatusBarStyle
{
CMConfig *config =[CMConfig sharedInstance];
if (config.isNightMode) {
return UIStatusBarStyleLightContent;
}
return UIStatusBarStyleDefault;
}- (void) changeStatusMode{
[self setNeedsStatusBarAppearanceUpdate];
}-(UIStatusBarStyle)preferredStatusBarStyle
{
return [self.visibleViewController preferredStatusBarStyle];
}
- (BOOL)prefersStatusBarHidden {
return [self.visibleViewController prefersStatusBarHidden];
}[self preferredStatusBarStyle];
[self prefersStatusBarHidden];注意的是,有个文献说不能如上手动调用,但经笔者验证,还是可以这样手动调用的。这个文献是https://blog.csdn.net/baohanqing/article/details/51619853。读者可以自行思考。