当前位置: 首页 > 知识库问答 >
问题:

将状态栏设置为灯光内容并动态显示/隐藏(带UINAVIGATIONCONTROLLER的UITabBarController)

段干博明
2023-03-14

我有一个UtiAbbarController作为根视图控制器。每个选项卡都有一个嵌入在导航控制器中的视图控制器。我的导航栏是深色的,所以我需要将状态栏设置为。lightContent。我还需要动态隐藏状态栏。

如果我将“基于视图控制器的状态栏外观”设置为“否”,我可以将状态栏正确设置为“.lightContent”,但我无法动态隐藏状态栏。

如果我将“基于视图控制器的状态栏外观”设置为“是”,则仅当导航栏不存在时,状态栏才会设置为“.lightContent”。

这是我在每个视图控制器中用来显示或隐藏状态栏的内容:

var shouldHideStatusBar: Bool = false {
    didSet { self.setNeedsStatusBarAppearanceUpdate() }
}
override var prefersStatusBarHidden: Bool { return shouldHideStatusBar }
override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation { return .slide }
override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }

我也尝试过:

导航控制器?。导航栏。barStyle=。黑色

要将状态栏设置为,我一定缺少什么。lightContent,并且仍然能够动态显示和隐藏状态栏。

共有2个答案

竺勇
2023-03-14

您必须在视图层次结构中向上冒泡这些值。例如,您的tabBarController应该询问它的selectedViewController它对prefersStatusBarHidden的值是什么,然后您的NavigationController需要询问它的topViewController它对prefersStatusBarHidden的值是什么。这样,当在tabBarController上调用prefersStatusBarHidden时,它会传递最顶部的视图控制器想要对状态栏做什么。

司寇嘉茂
2023-03-14

导致使用不推荐的方法:

UIApplication.shared.setStatusBarHidden(true, with: .slide)

不理想,但有效。希望有人有一个不依赖于不推荐的方法的解决方案。

 类似资料:
  • 本文向大家介绍Android 动态显示和隐藏状态栏详解及实例,包括了Android 动态显示和隐藏状态栏详解及实例的使用技巧和注意事项,需要的朋友参考一下 Android 动态显示和隐藏状态栏 View类提供了setSystemUiVisibility和getSystemUiVisibility方法,这两个方法实现对状态栏的动态显示或隐藏的操作,以及获取状态栏当前可见性。 setSystemUiV

  • 首先,我尝试了这个线程上的每一个答案:如何在iOS7中更改状态栏文本颜色,但我无法让状态栏显示白色文本。 在应用程序启动时,文本在加载到我的根视图控制器之前显示为白色。我认为问题在于,我的根视图控制器设置为不显示状态栏(我想要的),但其他每个视图都需要显示它。 当我转到第二个视图时,我看到状态栏文本从白色闪烁到黑色。 我已尝试在AppDelegate中将状态栏设置为亮起。 我已经尝试在rootVi

  • 在我的应用程序中,我想添加带有半透明、透明导航栏的灯光内容状态栏。但当我让导航栏透明时,它会用黑色的状态栏内容颜色进行自我调整。在我的例子中,导航控制器是必需的,因为需要用普通模式将表头固定在它上面。您的任何帮助都将不胜感激。 我试图通过设置导航控制器的条样式使状态栏外观变轻,如 但是,我仍然面临着同样的问题

  • 我正在构建一个应用程序,带有页面导航,需要在某些页面上显示状态栏,并在其他页面上隐藏它。我想使用淡入/淡出动画,所以我必须设置 并像这样更新状态栏: 当在页面之间导航时,这个过程非常有效,但我无法在启动时摆脱状态栏。 我试过设置: 将其添加到 将此添加到AppDelegates完成启动时使用了以下选项: 将其添加到初始页面的ViewController: 以及在链接的情节提要元素中将“状态栏”设置

  • 我有一个前台服务,按下按钮后会显示一个窗口。有没有办法隐藏(或过度隐藏)服务窗口显示屏上的系统状态栏?有我可以用的旗子吗?我试着到处找,但运气不好。

  • 我在隐藏状态栏时遇到了一些麻烦。 如果我使用此代码进入完全沉浸式模式(隐藏状态栏和导航),它确实会隐藏导航,但状态栏仍保持在那里: 我也尝试过使用清单: 两者都不管用。还尝试了不使用setSysteMivis()函数的清单方法(只是为了测试它是否可以工作——应该是这样的,因为我以前用过这个),但没有。 在Android 4.4.2(索尼z2平板电脑)和Android L-Dev预览版(第二版,Ne