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

防止视图控制器在状态栏下扩展

易祯
2023-03-14

我有一个视图控制器,这是导航控制器的rootVc。

我需要为rootview控制器隐藏导航栏,因此我使用以下方法来隐藏它并使其重新出现。

override func viewWillAppear(_ animated: Bool) {
    self.navigationController?.setNavigationBarHidden(true, animated: false)
}

 override func viewWillDisappear(_ animated: Bool) {
    self.navigationController?.setNavigationBarHidden(false, animated: false)
}

我基本上是在rootVc中隐藏导航栏,并为所有其他视图控制器显示它。

但当我移除导航栏时,我看到我的内容正在状态栏下扩展

有办法解决这个问题吗?

共有1个答案

和魁
2023-03-14

使用安全区域,而不是将顶部约束设置为superView。像这样的

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

  • 我有一个问题,当它涉及到状态栏和隐藏它。 我有一个具有幻灯片菜单的BaseViewController。这个BaseViewController也是应用程序[的根控制器,设置在应用程序中]: 只要我选择一个菜单项,BaseViewController就会被相应的ViewController填充[在我将其嵌入导航控制器之后]。 菜单项A:ViewControllerA 菜单项B: ViewContr

  • 问题内容: 在WWDC 2019上,Apple宣布了一种新的“卡式”外观模态演示,并带有内置手势,可通过向下滑动卡来消除模态视图控制器。他们还引入了新属性,以便您可以选择拒绝这种解雇行为。 但是到目前为止,我还没有找到在SwiftUI中模拟这种行为的方法。使用,不,据我所知,让你以同样的方式禁止解雇手势。我还尝试将模式视图控制器放在内 ,但这似乎也无济于事: 即使出现了,我仍然可以向下滑动以消除视

  • 我的项目中有多个故事板。我在一个故事板中有一个主页面浏览量控制器,我在一个单独的故事板中有一个安装视图控制器嵌入导航控制器。现在,当我从主页视图控制器中显示安装视图控制器导航控制器时,状态栏不会隐藏。但是当我将安装视图控制器故事板设置为info.plist中的主故事板文件库,并且安装视图控制器导航控制器是第一个呈现的视图时,状态栏将隐藏。我正在使用下面的代码隐藏状态栏。有人能告诉我当状态视图控制器

  • 我的应用程序使用深色导航栏颜色。因此,我将状态栏的颜色设置为白色(因此对比度很好)。 我通过将barStyle设置为黑色(使状态栏为白色)并将barTint设置为我的深红色来实现这一点。完美地工作。 我展示了一个像这样的: 但是,显示的SafariViewController的状态栏仍为白色。这是一个问题,因为导航栏具有默认的白色透明iOS默认样式。所以状态栏基本上是不可见的。 我怎样才能解决这个

  • 我正在编写一个具有多个视图的iOS应用程序。我已经将应用程序设置为使用基于ViewController的状态栏样式,这允许我使用以下代码 这就像预期的那样。 然后我将视图嵌入到导航控制器中,并将Barbuttonite与showSegue连接起来。此后,视图的ViewController切换为忽略样式设置,并显示默认的黑色状态栏。