显示自定义侧边菜单时如何隐藏部分状态栏

How to hide part of status bar, when custom side menu presented

我有一个基于 UIViewController 的自定义 Side Menu class。 Side menu 的呈现方式如下:

extension UIViewController: MenuPresentableProtocol {

    func setupMenu() {
        guard let menu = AppDelegate.shared.menu else { return }
        menu.view.frame = view.bounds
        view.addSubview(menu.view)
        menu.view.frame.origin.x = -UIScreen.main.bounds.width
    }

}

这意味着 status barappearance 取决于当前的 ViewControllers prefersStatusBarHidden 属性,在这种情况下是 false.

但是我需要在side menu下隐藏status bar的一部分。有没有办法实现这个?

这是我的:

菜单隐藏时,看起来不错。

但是当菜单出现时,...

P.S。我尝试使用 ,但它对我没有帮助。

此代码片段实际上会隐藏您的状态栏并显示一个视图

        UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, 20)] autorelease];
        view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"PortraitNavigationBG"]]; 
        //or use same color as your background

        [self.navigationController.view addSubview:view];

您可以完全隐藏状态栏,也可以完全显示。无法隐藏部分状态栏。

您可以在侧边菜单中使用与状态栏文本颜色相同的背景颜色,在视图控制器中使用一些相反的颜色。在这种情况下,状态栏的文本颜色将与侧边菜单的背景颜色相同,这意味着文本将不可见。所以,它会产生一半状态栏被隐藏而另一半不隐藏的效果。

你不会在appstore上找到任何一个你想要的应用程序,因为这根本不可能。如果某些应用程序希望具有相同的效果,请检查其侧边菜单的背景颜色和状态栏的文本颜色。两者都是一样的。

答案是正确的,你不能只隐藏状态栏的一部分。 但是,您可以通过重建自己的状态栏克隆并根据需要显示它来给出近乎完美的错觉:iOS 为您提供所需的信息:

  • time
  • 你的 carrier name,
  • battery level
  • 和电池charging state...
  • 您将错过真实的蜂窝信号强度信息,但您随后需要暂时绘制一个假的信号强度信息,以便为您呈现菜单和制作动画...

最后,这比硬编码更像是一件艺术作品:)