iOS最新StatusBar状态栏设置方式
之前的大多数设置状态栏的方法已经被遗弃或者无效,这里记录下最新设置statusBar的方法。
- 启动页隐藏状态栏
隐藏: 在info.plist中 添加 View controller-based status bar appearance 的key 然后值 设置成 YES【注意 不是NO】
2792221B-BCE6-46C3-B945-4C4A1CB25994.png然后勾选一下:
5B022740-B001-4F43-8884-921DF981FD5B.png2.界面中修改状态栏的样式或者动画 并显示statusBar
在这个ViewController中重写:
-
(BOOL)prefersStatusBarHidden
{
return NO;
} -
(UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
} -
(UIStatusBarAnimation)preferredStatusBarUpdateAnimation
{
return UIStatusBarAnimationSlide;
}
3.有时你发现上述方法无效,断电根本不走,其实是因为你用了自定义的navigation “包裹”了你的VC:
解决方法:在你自定义的navigationController中重写:
- (BOOL)prefersStatusBarHidden
{
UIViewController* topVC = self.topViewController;
return [topVC prefersStatusBarHidden];
}
同理 StatusBarStyle StatusBarUpdateAnimation ...
这样就能找到你当前的VC 并执行相应的方法
4.如果这个时候 还是不行,就要看看你view当前的VC是不是还在某个viewController的“包裹”下:
比如我的主页【dashBoardVC】就在我的RootViewController中添加的 那么 同理, 在你的RootViewController中 也要重写 :
-
(BOOL)prefersStatusBarHidden
{
if (self.childViewControllers.count) {
UIViewController *topCtrl = self.childViewControllers.firstObject;
if (topCtrl) {
return [topCtrl prefersStatusBarHidden];
}
}return NO;
} -
(UIStatusBarStyle)preferredStatusBarStyle
{
if (self.childViewControllers.count) {
UIViewController *topCtrl = self.childViewControllers.firstObject;
if (topCtrl) {
return [topCtrl preferredStatusBarStyle];
}
}return UIStatusBarStyleDefault;
} -
(UIStatusBarAnimation)preferredStatusBarUpdateAnimation
{
if (self.childViewControllers.count) {
UIViewController *topCtrl = self.childViewControllers.firstObject;
if (topCtrl) {
return [topCtrl preferredStatusBarUpdateAnimation];
}
}
return UIStatusBarAnimationSlide;
}
这就是最新的设置statusBar的一些属性的问题了,如果有问题,可以继续讨论。