Comment puis-je mettre un WKWebView dans une vue de défilement, considérant que je dois avoir d'autres éléments après la vue Web.
. Vue
... Affichage de défilement
....... ImageView
....... WKWebView
....... Bouton
Consultez mon exemple de projet
3 Réponses :
Selon ce que vous comprenez, vous voulez que la vue Web ne défile pas correctement si la page est plus grande que votre écran, elle défilera vers la droite? Pour afficher la page complète. Bien que vous puissiez modifier isscrollingenabled en false à partir du générateur d'interface ou du code en utilisant l'objet de scrollview. Pour définir la hauteur totale, donnez la contrainte 0,0,0,0 de tous les côtés et cela s'étendra sûrement à tout l'écran
Maintenant, le défilement de WKWebView reste verrouillé, mais la hauteur de WKWebView reste fixe ... J'ai poussé les modifications au projet dans Github
@AlanBarboza Je poste ma réponse dans 1 min.
c'est une longue minute
Si vous voulez obtenir la hauteur du contenu du html dans WKWebView
pour le rendre non défilable dans UIScrollView
, continuez à lire.
Vous devez observer (via un délégué) la hauteur du contenu de votre webView. Je vous donne ces étapes, car vous savez très bien ce que vous faites, et vous y êtes presque.
Créez une sortie de votre contrainte de hauteur webView p>
extension ViewController: WKNavigationDelegate { func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { self.constraint_WebViewHeight.constant = webView.scrollView.contentSize.height } } }
Abonnez-vous au délégué de webView
Cela vous informera (votre contrôleur lorsque votre webView aura fini de charger le contenu de votre site .
self.webView.navigationDelegate = self
Conforme au protocole
Dans la méthode didFinish navigation
de WKNavigationDelegate
, vous ajustez ensuite la constante de votre contrainte de hauteur webView. Mettez de l'animation si vous le souhaitez :)
@IBOutlet weak var constraint_WebViewHeight: NSLayoutConstraint!
Enfin, corrigez vos contraintes.
a. Supprimez votre contrainte de fond imageView. b. Ajoutez une contrainte de fond à votre bouton de sauvegarde dans le scrollView.
Cela rendra votre scrollView scrollable.
Voila! Cela donne ce résultat.
J'espère que cela vous aidera!
Cela résout vraiment le problème, je suis très reconnaissant .. Merci!
L'application plantera en raison d'impacts sur la mémoire si vous essayez de charger la page avec beaucoup d'images
C'est une mauvaise approche. Vous devez utiliser le scrollView de WKWebView.
Vous avez besoin de réserver un espace pour l'image et le bouton avec des marges html en utilisant javascript
[NSString stringWithFormat:@"document.body.style.margin = '%dpx %dpx %dpx %dpx'", (int)margins.top, (int)margins.right, (int)margins.bottom, (int)margins.left]
ou directement dans le corps html si vous pouvez y accéder.
Ajouter imageview et bouton dans scrollView de WKWebView.
Consultez cette question pour désactiver le défilement: stackoverflow.com/questions/28631317/...
Je n'ai pas compris la partie
avec des éléments après Web View
. Pourriez-vous clarifier un peu les choses?Veuillez lire ceci, puis modifier votre question: stackoverflow.com/help/mcve vous devez rendre la tâche aussi simple que possible pour que les gens vous aident .
@Mosbah je l'ai déjà essayé, mais le scroll est verrouillé sur WBWebView et ne remplit pas toute la hauteur de leur contenu
@Glenn J'ai mis à jour le texte de la question, désolé
@Magnas merci, j'ai mis à jour le texte de la question .. Je suis désolé
Vérifiez ma réponse, @AlanBarboza