Swift ios导航栏在被滚动隐藏后不会出现

Posted

技术标签:

【中文标题】Swift ios导航栏在被滚动隐藏后不会出现【英文标题】:Swift ios navigation bar wont appear after hidden by scroll 【发布时间】:2015-10-08 17:11:57 【问题描述】:

如果重要的话,我的 VC 的结构是 View -> Scroll View -> View

然后我使用此代码在滚动发生时隐藏导航栏。唯一的问题是一旦栏被隐藏它就不会再次显示。只有一条白线可见(载体、电池等)。

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

        navigationController?.hidesBarsOnSwipe = true
    

所以我现在的问题是如何再次显示该栏?

提前致谢

编辑,苹果文档:

讨论 当此属性设置为 true 时,向上滑动会隐藏导航栏和工具栏。向下滑动再次显示两个条形。如果工具栏没有任何项目,即使在滑动之后它仍然可见。此属性的默认值为 false。

【问题讨论】:

【参考方案1】:

如果您使用的是滚动视图,那么您必须使用滚动视图委托函数scrollViewDidScroll(_ scrollView:),如下所示,在viewDidLoad()viewDidAppear() 中使用navigationController?.hidesBarsOnSwipe = trueviewDidAppear()

extension ViewController: UIScrollViewDelegate 
func scrollViewDidScroll(_ scrollView: UIScrollView) 
    let translation = scrollView.panGestureRecognizer.translation(in: scrollView.superview)
    if translation.y >= 0 
        UIView.animate(withDuration: 0.4) 
            self.navigationController?.isNavigationBarHidden = false
        
    

【讨论】:

以上是关于Swift ios导航栏在被滚动隐藏后不会出现的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的导航栏在向下滚动时不隐藏而在向上滚动时出现?

Bootstrap 5:滚动 300 像素后隐藏/显示导航栏

用户滚动时隐藏导航栏

隐藏状态栏时,我的导航栏在 iOS7 中向上移动

导航栏在第二次和后续出现时隐藏在视图控制器上

如何在 Xamarin Forms 中滚动时折叠(隐藏或向上滑动)导航栏(标题栏)?