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

时间:2016-10-20 23:26:13

标签: ios swift xcode uinavigationcontroller

当我通过调用self.navigationController?.setNavigationBarHidden(true, animated: true)

滚动时,我隐藏了我的导航栏

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

甚至更奇怪的是,如果我推送到新的VC并返回现在尝试滚动导航栏会一直隐藏,这就是我想要的。

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

enter image description here 这是我第一次尝试隐藏导航栏时的样子,它不会一直向上/底层视图显示太多。

enter image description here

如果我推送到下一个VC并返回,现在尝试隐藏导航栏,它可以正常工作

我的观点有 0 约束到顶部布局所以它拥抱顶部

那么,当隐藏导航栏时,如何让我的视图总是像第二张图片一样?

2 个答案:

答案 0 :(得分:1)

试试这段代码......

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

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

     override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)

navigationController?.hidesBarsOnSwipe = true

}

答案 1 :(得分:-1)

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

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

在Swift 2中:

覆盖func prefersStatusBarHidden() - >布尔{     返回true }

在Swift 3中:

覆盖var prefersStatusBarHidden:Bool {     返回true }