简体   繁体   English

iOS Swift WKWebView 不缩放

[英]iOS Swift WKWebView is not zooming

I am working on an iOS application that has a web view to load inside it.我正在开发一个 iOS 应用程序,该应用程序可以在其中加载 Web 视图。 I am using WKWebView but it is not zooming.我正在使用WKWebView但它没有缩放。

I set minimum and maximum scale of webView's scrollView but still doesn't work.我设置了webView's scrollView最小和最大比例,但仍然不起作用。

@IBOutlet weak var webView: WKWebView!
webView.scrollView.minimumZoomScale = 0.1
webView.scrollView.maximumZoomScale = 1.0

How can I enable scaling of WKWebView ?如何启用WKWebView缩放?

works on Xcode 11, swift 4 , iOS 12,13 .适用于 Xcode 11、swift 4、iOS 12,13。 Implement WebView navigationDelegate实现 WebView 导航委托

 let isAllowZoom: Bool = false

    override func viewDidLoad() {

            webView.scrollView.scrollEnabled = 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);"
                webViewWB.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);"
                 webViewWB.evaluateJavaScript(javascript, completionHandler: nil)
            }

        }

then try this :然后试试这个:

        webView.scrollView.scrollEnabled = true               
        webView.scrollView.bounces = false                    
        webView.allowsBackForwardNavigationGestures = false   
        webView.contentMode = .ScaleToFill
//  Set the WKWebView scroll view delegate
        webView.scrollView.delegate = self

Conform your vc to UIScrollViewDelegate and add it's delegate method viewForZoomingInScrollView to return nil as follows :使您的 vc 符合 UIScrollViewDelegate 并添加它的委托方法 viewForZoomingInScrollView 以返回 nil 如下:

 func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
        return nil
    }

Hope it helps to get your page adopt native behavior希望它有助于让您的页面采用本机行为

您必须通过添加以下内容将它的scalesPageToFit属性设置为true

webView.scalesPageToFit = true

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM