我想在WKWebView
缩小/缩小时隐藏/显示UINavigationController
的导航栏。
隐藏或显示UINavigationBar
非常简单,如下所示:
self.navigationController?.navigationBarHidden = true
但问题是我不知道把代码放在哪里。
我正在考虑拦截WKWebView
的缩放事件.可能还有其他方式,欢迎任何意见。
每个WKWebView
都有一个 scrollView
属性,允许您访问 Web 视图的UIScrollView
部分。 您可以使用 UIScrollViewDelegate
方法,scrollViewDidScroll
在 Web 视图滚动时获取回调。
首先,设置滚动视图委托:
let webView = WKWebView(...)
webView.scrollView.delegate = self
然后,实现委托方法scrollViewDidScroll
并添加逻辑以隐藏和显示导航栏:
extension YourClass: UIScrollViewDelegate {
func scrollViewDidScroll(scrollView: UIScrollView) {
// you can use the position of the scrollView to show and hide your nav bar here
}
}
我找到了另一种实现它的方法:
self.navigationController?.hidesBarsOnSwipe = true
iOS 8.0 为 UINavigationController 提供了一个简单的属性,可以屏蔽一些复杂的行为。如果将任何 UINavigationController 的 hidesBarsOnSwipe 设置为 true,则 iOS 会自动向视图添加点击手势识别器,以根据需要处理隐藏(和显示)导航栏。这意味着您只需一行代码即可模仿 Safari 的导航栏行为。