iOS最新StatusBar状态栏设置方式

之前的大多数设置状态栏的方法已经被遗弃或者无效,这里记录下最新设置statusBar的方法。

  1. 启动页隐藏状态栏

隐藏: 在info.plist中 添加 View controller-based status bar appearance 的key 然后值 设置成 YES【注意 不是NO】

2792221B-BCE6-46C3-B945-4C4A1CB25994.png

然后勾选一下:

iOS最新StatusBar状态栏设置方式_第1张图片
5B022740-B001-4F43-8884-921DF981FD5B.png

2.界面中修改状态栏的样式或者动画 并显示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的一些属性的问题了,如果有问题,可以继续讨论。

你可能感兴趣的:(iOS最新StatusBar状态栏设置方式)