Swift调用setNavigationBarHidden但视图不会移动到顶部

我通过调用滚动来隐藏我的导航栏: self.navigationController?.setNavigationBarHidden(true, animated: true)

唯一的问题是导航栏不会一直隐藏。

甚至更奇怪的是,如果我推送到一个新的VC并返回现在尝试滚动导航栏被隐藏到我想要的所有方式。

如果重要的是我隐藏了VC2上的导航栏,然后当我退回到VC 1时显示它。

在此处输入图像描述 这是我第一次尝试隐藏导航栏时的样子,它不会一直向上/底层视图显示太多。

在此处输入图像描述

如果我推送到下一个VC并返回,现在尝试隐藏导航栏它的工作原理

我的视图有一个0到顶部布局的约束,所以它拥抱顶部

那么,当隐藏导航栏时,如何使我的视图始终像第二张图像一样?

试试这个代码……

注意:这是解决您问题的简单方法。 如果你想要更多自定义外观导航条和状态栏外观。你应该阅读我以前的评论……

将导航控制器属性hidesBarsOnSwipe设置为true

  override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) navigationController?.hidesBarsOnSwipe = true 

}

我理解你的问题。 第二个图像中的绿色部分不是导航栏,而是状态栏。 您可以隐藏状态栏,如下所示。

您应该在视图控制器上实现prefersStatusBarHidden:

在Swift 2中:

override func prefersStatusBarHidden() – > Bool {return true}

在Swift 3中:

override var prefersStatusBarHidden:Bool {return true}