ios-UIStatusBar

优先级:

info.plist文件中(存的XML格式)
View controller-based status bar appearance -> YES,
则控制器对状态栏设置的优先级高于application,
-> NO,则以application为准,控制器设置状态栏prefersStatusBarHidden是无效的

隐藏

在plist中设置status bar 的Status bar is initially hidden属性为YES,启动时会隐藏状态栏,(注意:当 Status bar is initially hidden 设置为 NO 时,不管 View controller-based status bar appearance 设置为 NO 还是 YES ,都是无效的,只有 Status bar is initially hidden 设置为 YES 的时候, View controller-based status bar appearance 才生效)

在plist中设置View controller-based status bar appearance属性为NO,会全局隐藏状态栏。 —> 等价于在在 AppDelegate 中代码实现[UIApplication sharedApplication].statusBarHidden = YES;(注意:如果是通过代码实现状态栏的隐藏,必须在 Info.plist 文件中添加 View controller-based status bar appearance ,并且必须设置为 NO ,否则代码将不会有任何效果,而且代码只能隐藏 所有UIViewController 中的状态栏,不能隐藏在 LunchScreen时的状态栏。)

在当前UIViewController隐藏状态栏,可以通过在 Info.plist 文件中添加 View controller-based status bar appearance 属性,并设置为 YES。然后在对应的UIViewController中添加如下代码:

- (BOOL)prefersStatusBarHidden {
    return YES;
}

如果想要单独设置状态栏颜色,可以使用kvc获取私有属性,设置方法如下:

/**
 设置状态栏背景颜色
 @param color 设置颜色
 */
- (void)setStatusBarBackgroundColor:(UIColor *)color {

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

通过代码局部设置状态栏的文字颜色

self.navigationController.navigationBar.barStyle = UIBarStyleBlack;

链接://www.greatytc.com/p/948931fff134

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

推荐阅读更多精彩内容