childViewControllerForStatusBarHidden用于隐藏

Wil*_*Hua 6 statusbar drawer ios

我试图隐藏我状态栏的一半.具体来说,我正在使用REFrostedViewController作为我的侧抽屉,当它出来时,我希望它能够超越状态,例如在这张图片中(应用程序是谷歌的收件箱).

在此输入图像描述

UIViewController的当前层次结构如下:

- REFrostedViewController
 |--MenuViewController
 |--NavigationControler
    |--ContentViewController
Run Code Online (Sandbox Code Playgroud)

我已经UIViewControllerBasedStatusBarAppearance开始了YES.在我的抽屉菜单(MenuViewController)中我有方法

- (BOOL)prefersStatusBarHidden
{
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

在我的导航控制器中,我有:

- (UIViewController *)childViewControllerForStatusBarHidden {
    return self.frostedViewController.menuViewController;
}
Run Code Online (Sandbox Code Playgroud)

这会在所有屏幕中隐藏状态栏.当我做

- (UIViewController *)childViewControllerForStatusBarHidden {
    if (self.isDrawerOpen) 
    {
        return self.frostedViewController.menuViewController;
    } else {
        return self.frostedViewController.contentViewController;
    }
}
Run Code Online (Sandbox Code Playgroud)

它崩溃了.self.frostedViewController.contentViewController拥有一个navigationController(也有prefersStatusBarHidden实现的方法)