【问题标题】:iOS Swift WKWebView is not zoomingiOS Swift WKWebView 没有缩放
【发布时间】:2019-08-03 05:11:34
【问题描述】:

我正在开发一个 iOS 应用程序,该应用程序具有要在其中加载的 Web 视图。我正在使用WKWebView,但它没有缩放。

我设置了webView's scrollView 的最小和最大比例,但仍然不起作用。

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

如何启用WKWebView 的缩放?

【问题讨论】:

    标签: ios swift webview wkwebview


    【解决方案1】:

    适用于 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)
            }
        }
    

    【讨论】:

      【解决方案2】:

      然后试试这个:

              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 以返回 nil,如下所示:

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

      希望它有助于让您的页面采用原生行为

      【讨论】:

        【解决方案3】:

        您必须通过添加将其scalesPageToFit 属性设置为true

        webView.scalesPageToFit = true
        

        【讨论】:

        • webView.scalesPageToFit 在 UIWebView 中可用,但在 WKWebView 中不可用
        猜你喜欢
        • 2019-06-30
        • 2018-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-04
        • 2022-11-02
        相关资源
        最近更新 更多