我正在处理一个iOS应用程序,该应用程序具有用于加载其内部的Web视图。我正在使用WKWebView
,但不是缩放。
我设置了webView's scrollView
的最小和最大比例,但仍然不起作用。
@IBOutlet weak var webView: WKWebView!
webView.scrollView.minimumZoomScale = 0.1
webView.scrollView.maximumZoomScale = 1.0
如何启用 WKWebView
的缩放?
在Xcode 11,Swift 4,iOS 12,13上工作。实现WebView NavigationDelegate
let isAllowZoom: Bool = false
override func viewDidLoad() {
super.viewDidLoad()
webView.scrollView.isScrollEnabled = true
webView.scrollView.bounces = false
webView.allowsBackForwardNavigationGestures = false
webView.contentMode = .scaleToFill
webView.navigationDelegate = self
}
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
if isAllowZoom {
let javascript = "var meta = document.createElement('meta');meta.setAttribute('name', 'viewport');meta.setAttribute('content', 'width=device-width, initial-scale=1.0, maximum-scale=10.0, user-scalable=yes');document.getElementsByTagName('head')[0].appendChild(meta);"
webView.evaluateJavaScript(javascript, completionHandler: nil)
} else {
let javascript = "var meta = document.createElement('meta');meta.setAttribute('name', 'viewport');meta.setAttribute('content', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no');document.getElementsByTagName('head')[0].appendChild(meta);"
webView.evaluateJavaScript(javascript, completionHandler: nil)
}
}
然后尝试一下:
webView.scrollView.scrollEnabled = true
webView.scrollView.bounces = false
webView.allowsBackForwardNavigationGestures = false
webView.contentMode = .ScaleToFill
// Set the WKWebView scroll view delegate
webView.scrollView.delegate = self
将您的VC符合UISCROLLVIEWDELEGATE,并添加其委托方法ViewForzoomingInsCrollview以返回零,如下所示:
func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
return nil
}
希望它有助于使您的页面采用本地行为
您必须通过添加:
将其是scalesPageToFit
属性设置为true
webView.scalesPageToFit = true