status bar总结
改变status bar 的颜色
最快捷的3方式:
info.plist中info.plist中View controller-based status bar appearance设置为NO(默认为YES)设置为NO(默认为YES),设置deployment info中
同样在info.plist中View controller-based status bar appearance设置为NO的情况下,在info.plist中中设置Status bar style
代码设置:前提同样为View controller-based status bar appearance设置成NO。
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
以上3中方式View controller-based status bar appearance均设置成NO,因此这几种方式都不是通过视图控制器来控制状态栏的。
当View controller-based status bar appearance设置成YES(默认)时,上述方法都将失效。视图控制器通过下面3个方法来控制状态栏
//状态栏颜色
- (UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleDefault;
}
//是否隐藏状态栏
- (BOOL)prefersStatusBarHidden{
return NO;
}
//状态栏状态改变时的动画效果
- (UIStatusBarAnimation)preferredStatusBarUpdateAnimation{
return UIStatusBarAnimationSlide;
}
注意
如果你使用了系统的UINavigationController,且它的navigationBar没有被隐藏的话,它的rootController及之后push的controller的preferredStatusBarStyle方法不会被调用(其他两个方法还是会被调用); UINavigationController会根据自己navigationBar的barStyle,来决定StatusBarStyle的值; 如果你设置了self.navigationController.navigationBarHidden = YES; 那preferredStatusBarStyle就会被正常调用了。
隐藏 显示状态栏
View controller-based status bar appearance为NO的情况下设置
[[UIApplication sharedApplication] setStatusBarHidden:YES];
或
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];