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
?
3 Réponses :
vous devez définir sa propriété scalePageToFit
sur true
en ajoutant:
webView.scalesPageToFit = true
webView.scalesPageToFit est disponible dans UIWebView, mais pas dans WKWebView
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
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) } }