statusBar 背景以及字体颜色设置

系统自带效果

  • 1.UIStatusBarStyleDefault 效果是:黑色字体、透明背景

  • 2.UIStatusBarStyleLightContent 效果是:白色字体、透明背景

需求:改背景颜色

#注意:此方法调用后会全局改变statusBar的背景颜色,如果只需要当前控制器显示,那么应该在viewWillDisappear 中设置为clearColor

- (void)setStatusBarBackgroundColor:(UIColor *)color{
    UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
    
    if ([statusBar respondsToSelector:@selector(setBackgroundColor:)])
    {
        statusBar.backgroundColor = color;
    }
}

任意组合(白色或黑色字体 配合任意颜色的背景)

在导航控制器中重写方法:
- (UIViewController *)childViewControllerForStatusBarStyle{
    return self.topViewController;
}

控制器中设置:UIStatusBarStyleDefault || UIStatusBarStyleLightContent 以达到修改文字颜色的效果
- (UIStatusBarStyle)preferredStatusBarStyle{
    return UIStatusBarStyleLightContent;
}

注意(横屏情况下,iOS8之后系统会默认隐藏状态栏)重写系统方法去显示

//设置是否隐藏,iOS8.0之后,系统默认横屏的时候隐藏状态栏
- (BOOL)prefersStatusBarHidden {
    return NO;
}

如果项目中使用频繁,可以封装成一个父类,工具类可能就麻烦点,
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent; 这个方法设置没有任何效果,时间紧迫,先这样处理了,迟点项目没那么赶的时候再完善,写个工具类

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容