iOS开发·状态栏设置技巧(2):立刻更新状态栏样式(显隐,颜色控制)

  • 前提背景

info.plist文件中有个一项:View controller-based status bar appearance:

当这里的值分别为YES,则以 ViewController 的设置为准,即通过preferredStatusBarStyle来设置状态栏。而 ViewControllerstatus 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。读者可以自行思考。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容