2
votes

iOS Swift WKWebView ne fait pas de zoom

Je travaille sur une application iOS qui a une vue Web à charger à l'intérieur. J'utilise WKWebView mais ce n'est pas un zoom.

J'ai défini l'échelle minimale et maximale de scrollView de webView mais ne fonctionne toujours pas.

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

Comment puis-je activer la mise à l'échelle de WKWebView ?


0 commentaires

3 Réponses :


-1
votes

vous devez définir sa propriété scalePageToFit sur true en ajoutant:

webView.scalesPageToFit = true


1 commentaires

webView.scalesPageToFit est disponible dans UIWebView, mais pas dans WKWebView



1
votes

puis essayez ceci:

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

Conformez votre vc à UIScrollViewDelegate et ajoutez sa méthode déléguée viewForZoomingInScrollView pour renvoyer nil comme suit:

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

J'espère que cela aidera votre page à adopter un comportement natif


0 commentaires

1
votes

fonctionne sur Xcode 11, swift 4, iOS 12,13. Implémenter la navigation WebViewDelegate

 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)
            }

        }


0 commentaires