美文网首页
ios-UIStatusBar

ios-UIStatusBar

作者: 我是谁重要吗 | 来源:发表于2018-04-04 20:49 被阅读10次

优先级:

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;

链接:https://www.jianshu.com/p/948931fff134

相关文章

  • ios-UIStatusBar

    优先级: info.plist文件中(存的XML格式)View controller-based status b...

  • iOS-UIStatusBar详细总结

    1、UIStatusBar简介 iOS上的statusBar就是指的最上面的20point高的部分,分为两个部分 ...

网友评论

      本文标题:ios-UIStatusBar

      本文链接:https://www.haomeiwen.com/subject/vculhftx.html