美文网首页导航栏
iOS 隐藏状态栏

iOS 隐藏状态栏

作者: 阿斯兰iOS | 来源:发表于2017-08-07 16:44 被阅读158次

    如何隐藏某个控制器的状态栏?

    1、在 info.plist 文件增加 View controller-based status bar appearance 属性,设置值为 YES。

    2、重写控制器的方法:

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

    3、需要改变状态栏状态,就调用 setNeedsStatusBarAppearanceUpdate 方法:

    [self setNeedsStatusBarAppearanceUpdate];
    

    4、注意!!!

    如果修改了 toVC 的 modalPresentationStyle,一定要修改 toVC 的 modalPresentationCapturesStatusBarAppearance 属性为 YES,上面的代码才有效!

    例如,present 某个控制器的时候,想让当前控制器不消失,就要修改 toVC 的 modalPresentationStyle 属性为 UIModalPresentationOverFullScreen。当 toVC 发生某些事情就隐藏状态栏,需要这样写:

    // fromVC.m 
    
    UIViewController *toVC = [UIViewController new];
    // 当前控制器不消失,toVC 透明的时候能看到
    toVC.modalPresentationStyle = UIModalPresentationOverFullScreen;
    // 是否接管状态栏外观,即重写的 prefersStatusBarHidden 等方法是否会被调用
    toVC.modalPresentationCapturesStatusBarAppearance = YES;
    [self presentViewController:toVC animated:YES completion:nil];
    

    被 presented 的控制器要这样写:

    // toVC.m 
    
    // 重写
    - (BOOL)prefersStatusBarHidden {
        return self.shouldHiddeStatusBar;
    }
    
    // 某个事件处理函数
    - (void)buttonClick {
        // 刷新状态栏
        [self setNeedsStatusBarAppearanceUpdate];
    }
    

    参考文章:
    UIViewController's prefersStatusBarHidden not working

    相关文章

      网友评论

      • 小志Shannon:灰常感谢,搞了好久为啥modal出来的控制器设置了隐藏无效,原来是少设置了属性。:clap:

      本文标题:iOS 隐藏状态栏

      本文链接:https://www.haomeiwen.com/subject/ydjalxtx.html