Swift 调用 setNavigationBarHidden 但视图不会移到顶部
Posted
技术标签:
【中文标题】Swift 调用 setNavigationBarHidden 但视图不会移到顶部【英文标题】:Swift calling setNavigationBarHidden but view wont move to top 【发布时间】:2016-10-20 23:26:12 【问题描述】:当我通过调用滚动时隐藏导航栏:self.navigationController?.setNavigationBarHidden(true, animated: true)
唯一的问题是导航栏没有完全隐藏。
更奇怪的是,如果我推到一个新的 VC 并返回,现在尝试滚动导航栏会一直隐藏,这正是我想要的。
如果重要的话,我会在 VC2 上隐藏导航栏,然后在我退出到 VC 1 时显示它。
这是我第一次尝试隐藏导航栏时的样子,它不会一直向上/底层视图显示太多。
如果我推到下一个 VC 并返回并现在尝试隐藏导航栏,它可以工作
我的视图对顶部布局有 0 的约束,因此它拥抱顶部
那么在隐藏导航栏时,如何让我的视图始终像第二张图片一样?
【问题讨论】:
只有这样才能做到这一点,您必须调整导航栏设置并使用 UIView 以编程方式创建自己的导航栏和状态栏,然后从那里获取它。我个人在我的项目中使用它。跨度> 你说对了一半。我会上传正确的代码。一旦你发布另一个关于你想要动画等的问题......关于我的测试项目的另一件事。你甚至可以制作动画navBar,别忘了给我点赞……干杯 感谢您的关注..我将上传代码 2mrow...干杯 你应该改变你的问题内容。否则你会得到关于你的问题的-ve反馈。有人已经给了你一个-ve的反馈。如果我给你一个问题的答案,有更多的-Ve反馈。人们认为我疯了。只需修改问题标签,例如如何隐藏导航栏并以编程方式放置一个看起来像导航栏的 uiview ...干杯 查看我在这篇帖子***.com/questions/40176803/… 上的回答。您的代码隐藏在该答案中...如果您喜欢它,请给我打勾欢呼... 【参考方案1】:试试这个代码...
注意:这是解决您的问题的简单方法。如果您想要更多自定义外观导航栏和状态栏外观。您应该阅读我之前的评论...
将导航控制器属性 hidesBarsOnSwipe 设置为 true
override func viewDidAppear(animated: Bool)
super.viewDidAppear(animated)
navigationController?.hidesBarsOnSwipe = true
【讨论】:
关于您的评论,您的意思是我应该在完全隐藏导航栏的情况下初始化我的视图,然后设置 UIView 的样式以使其看起来像导航栏? 这是我的新问题:***.com/questions/40175513/… 很高兴看到你的动画效果【参考方案2】:我明白你的问题。 第二张图片中的绿色部分不是导航栏,而是状态栏。 您可以隐藏状态栏,如下所示。
您应该在视图控制器上实现 prefersStatusBarHidden:
在 Swift 2 中:
覆盖 func prefersStatusBarHidden() -> Bool 返回真
在 Swift 3 中:
覆盖 var prefersStatusBarHidden: Bool 返回真
【讨论】:
不,绿色是我的看法。当我隐藏导航栏时,我希望我的视图始终像第二张图片一样显示。我仍然希望显示我的状态栏,我只是不想像第一张图片那样有多余的空间 我不能,因为我在滚动而不离开时隐藏了导航栏以上是关于Swift 调用 setNavigationBarHidden 但视图不会移到顶部的主要内容,如果未能解决你的问题,请参考以下文章