iOS 状态栏更改颜色

    最近在开发过程中遇到了与状态栏打交道的问题,碰到了一些问题,所以记录一下,方便以后查询。



1.状态栏简介

    1.状态栏在普通iPhone上高度是20.但是在iPhone X上是44.

    * 注意:iPhoneX导航栏高度是 44 + 44

    2.状态栏字体颜色:

            2.1:黑色:UIStatusBarStyleDefault (默认)

            2.2:白色:UIStatusBarStyleLightContent



2.更改颜色和显隐

方法一 :在 info.plist 中,将 View controller-based status bar appearance 设为 NO  


info.plist

1.全局的设置 在app delegate中设置状态栏颜色:

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;

2.全局隐藏状态栏(会往上移动状态栏的高度,一般不会全局隐藏它)

 [UIApplication sharedApplication].statusBarHidden = YES;



在控制器中:

-(void)viewWillAppear:(BOOL)animated{

    [super viewWillAppear:animated];

    //黑色   

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;

    //隐藏   

[UIApplication sharedApplication].statusBarHidden = YES;

}

-(void)viewWillDisappear:(BOOL)animated{

    [super viewWillDisappear:animated];

    //白色    [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;

    //显示   

[UIApplication sharedApplication].statusBarHidden = NO;

}



方法二:

在 info.plist 中,将 View controller-based status bar appearance 设为 YES (默认值就是YES),或者没有设置。(建议使用方法一,这个方法我没用过) 

如果值为YES。方法一的设置方法则无效,用下面方法


//在基类的Navigation中设置全局颜色,但是隐藏nav的颜色会不更改

self.navigationBar.barStyle = UIStatusBarStyleLightContent;

[self setNeedsStatusBarAppearanceUpdate];


//在VC中设置

//设置样式

 - (UIStatusBarStyle)preferredStatusBarStyle {

    return UIStatusBarStyleLightContent; 

//设置是否隐藏 

- (BOOL)prefersStatusBarHidden {   

    return NO; 

//设置隐藏动画 

- (UIStatusBarAnimation)preferredStatusBarUpdateAnimation { 

    return UIStatusBarAnimationNone; 

}


3.适配高度问题

//获取高度,然后在特殊界面根据状态栏高度适配

//statusBar高度

#defineStatusBarHeight [UIApplication sharedApplication].statusBarFrame.size.height


参考:

链接1;

链接2

你可能感兴趣的:(iOS 状态栏更改颜色)