ios - “滑动时隐藏导航栏”永远不会返回

标签 ios swift xcode uinavigationcontroller

我在我的 View Controller 中创建了视差类型的滚动效果(或弹性标题)。

我有一个 uiscrollview,它固定在窗口边距上。在这里面我有一个 View ,它锚定了 ScrollView 的 0 个常量约束,并设置为相等的宽度。 该 View 内是内容。内容的顶部是一张图像,它使用两个约束锚定到窗口的顶部(安全区域指南)。 首先是constant=0 priority=750。 第二个是常量<=0 priority=1000。

这有效.. 当我向上滚动时,所有内容都向上滚动。当我从顶部向下滚动时,图像会拉伸(stretch)然后弹回。

问题:我也在尝试实现导航栏以在用户滚动时隐藏。我已将此代码添加到 View Controller :

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

当我向上滚动时这工作正常(导航栏淡出并向上动画直到隐藏),但是当我向下滚动时导航栏不会返回。我假设它以某种方式被固定在窗口顶部的图像隐藏了。但是如何调整/重新附加导航栏?

xcode 9 - swift 4

最佳答案

尝试使用以下代码可能会有帮助。

确保你应该使用 UIScrollViewdelegate 并实现 scrollViewDidScroll 委托(delegate)方法。

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let scrollOffset: Float = Float(scrollView.contentOffset.y)
    if scrollOffset < 0 {
        navigationController?.hidesBarsOnSwipe = false
        navigationController?.setNavigationBarHidden(false, animated: true)
    }
    else {
        navigationController?.hidesBarsOnSwipe = true
    }
}

关于ios - “滑动时隐藏导航栏”永远不会返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46522655/

相关文章:

ios - SWRevealViewController - RightViewController

IOS Swift 关闭标签栏 Controller 并启动一个新的

ios - 创建基于自动布局的指标 View

swift - 遵循一个协议(protocol)并在另一个采用该协议(protocol)的类初始值设定项中使用 self 作为参数

ios - 在 Xcode 单元测试中模拟网络连接? (可能与 AFNetworking 有关)

ios - 当从 iOS 中的另一个 Storyboard场景调用 viewController 时, TableView 变得空白(加载或重建)

ios - 是否可以在 UITableViewCell 的单个按钮上快速设置文本

ios - 使用未声明的类型 'Player'

swift - 关于 ..< 函数声明的说明

ios - MPNowPlayingInfoCenter 实时图标