美文网首页
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

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