iOS 状态栏颜色、隐藏等

View controller-based status bar appearance 设置为NO的情况

这种可以在工程的 General 中选择配置,当然也可以在代码中进行设置,使用如下的代码,想单独修改某一个控制器的,也是下面的代码

p.s. 这些方法在iOS9之后都废弃了,不建议使用

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
[[UIApplication sharedApplication] setStatusBarHidden:YES];

View controller-based status bar appearance 设置为YES的情况

未使用navigation bar / 隐藏了navigation bar

这种情况 只要在当前控制器里重写下面的方法就可以了

- (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

使用了navigation bar

重写这个方法是不起作用的

- (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

这个时候有两种选择,一是在对应的导航控制器中设置好颜色,方法也是重写preferredStatusBarStyle,另一种是使用下面的代码修改,如果只是想修改一个单独的页面,可以在生命周期的方法中设置和重置,比如viewWillAppear 和 viewWillDisappear 中设置

[self.navigationController.navigationBar setBarStyle:UIBarStyleBlack];

隐藏状态栏

在当前控制器里重写下面方法

- (BOOL)prefersStatusBarHidden {
    return self.hideStatusBar;
}

如果使用了变量控制隐藏状态,在变量值修改之后,要调用下面方法

self.hideStatusBar = YES;
[self setNeedsStatusBarAppearanceUpdate];

下面这种方式会失效

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];

你可能感兴趣的:(iOS 状态栏颜色、隐藏等)