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

在导航控制器中时,将忽略视图控制器的首选状态栏样式

陈朗
2023-03-14

我正在编写一个具有多个视图的iOS应用程序。我已经将应用程序设置为使用基于ViewController的状态栏样式,这允许我使用以下代码

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
} 

这就像预期的那样。

然后我将视图嵌入到导航控制器中,并将Barbuttonite与showSegue连接起来。此后,视图的ViewController切换为忽略样式设置,并显示默认的黑色状态栏。

共有2个答案

闻人高卓
2023-03-14

有一个更简洁一点的解决方案(苹果推荐):

extension UINavigationController {
    override open var childForStatusBarStyle: UIViewController? {
        return topViewController
    }
}
景凌
2023-03-14

当你在一个不会被呼叫的导航控制器中时。将调用导航控制器的preferredStatusBarStyle。在编写代码时尝试以下操作:

extension UINavigationController {

   open override var preferredStatusBarStyle: UIStatusBarStyle {
      return topViewController?.preferredStatusBarStyle ?? .default
   }
}
 类似资料:
  • 问题内容: 题 如何仅使用按钮的touch up内部事件从一个视图控制器导航到另一个视图控制器? 更多信息 我在一个示例项目中尝试执行的步骤是: 创建示例单视图应用程序。 为用户界面(ViewController2)添加一个新文件->具有XIB的Objective-C类。 在ViewController.xib中添加一个按钮,并控制单击ViewController.h的按钮以创建内部补全事件。 转

  • 我有一个视图控制器,这是导航控制器的rootVc。 我需要为rootview控制器隐藏导航栏,因此我使用以下方法来隐藏它并使其重新出现。 我基本上是在rootVc中隐藏导航栏,并为所有其他视图控制器显示它。 但当我移除导航栏时,我看到我的内容正在状态栏下扩展 有办法解决这个问题吗?

  • 请参见黑色导航栏和分组的表格视图垂直细条纹之间的空白?该空间是导航栏的一部分。如果我滚动表格视图,空格将保持在原来的位置。 我需要navigationController框架仅在这个viewController中更短,这样就没有提供的屏幕截图中显示的空白。 (可能与此有关的是一个带有分组tableview的viewController)。。 以下是此视图控制器的唯一其他子视图: 此导航栏在应用程序

  • 我有一个应用程序,基于视图控制器的状态栏外观设置为。我的一些视图是深色的,一些视图是浅色的,应用程序有一个相当复杂的视图控制器层次结构,但它可以完美地将适当的方法子类化和重写,并与模式视图(捕捉呈现样式等)相结合。 然而,我需要一种全局的方式来查看顶部的特定项目(在状态栏后面,在我的应用程序边界内),就像顶部的个人热点/GarageBand录音/通话等栏一样。由于栏的背景颜色,我想在显示栏时覆盖状

  • 我正在尝试修改状态栏的外观(将文本设置为白色/将样式设置为“灯光”)。通过将其添加到AppDelegate中,我成功地设置了背景色。swift文件: 但是,当我去更改状态栏的文本样式时,甚至在一般情况下更改此样式 我还试图通过nfo.plist修改状态栏,但是没有“基于视图控制器的状态栏外观”字段(见第二张图片)。此外,状态栏样式选项下没有“轻”样式选项(见下图):