如何监听WKWebView的Zoom in/out事件
How to listen Zoom in/out event of WKWebView
我想 hide/show UINavigationController
的 navigationBar 当 WKWebView
缩放时 out/in。
隐藏或显示 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 的导航栏行为。
我想 hide/show UINavigationController
的 navigationBar 当 WKWebView
缩放时 out/in。
隐藏或显示 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 的导航栏行为。