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