我在我的 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
最佳答案
尝试使用以下代码可能会有帮助。
确保你应该使用 UIScrollView
的 delegate
并实现 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/