¿Cómo puedo poner un WKWebView dentro de una Vista de desplazamiento considerando que debo tener otros elementos después de la Vista web?
. View ... Scroll View ....... ImageView ....... WKWebView ....... Button
Revisa mi proyecto de muestra
Si desea obtener la altura del contenido del html en WKWebView para que no se pueda desplazar dentro de UIScrollView , siga leyendo.
Debe observar (a través de un delegado) la altura del contenido de su vista web. Te estoy dando estos pasos, ya que sabes muy bien lo que estás haciendo, y ya casi estás allí.
Haga una salida de su restricción de altura webView
@IBOutlet weak var constraint_WebViewHeight: NSLayoutConstraint!Suscribirse al delegado de webView
Esto le permitirá saber (a su controlador) cuando su vista web haya terminado de cargar el contenido de su sitio.
self.webView.navigationDelegate = selfConforme al protocolo
Dentro del método de didFinish navigation didFinish de WKNavigationDelegate , luego ajusta la constante de su restricción de altura de webView. Pon algo de animación si quieres :)
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 } } }Finalmente, arregle sus restricciones.
una. Elimine la restricción inferior de ImageView. b. Agregue la restricción inferior a su botón de guardar en scrollView.
Esto hará que su scrollView sea desplazable.
¡Voila! Esto produce este resultado.
¡Espero que esto ayude!
Según el entendimiento, desea que la vista web no se desplace bien si la página es más grande que su pantalla, ¿se desplazará a la derecha? Para mostrar la página completa. Aunque puede cambiar isscrollingenabled a falso desde el generador de interfaz o desde el código usando el objeto de scrollview. Para establecer la altura completa, proporcione la restricción 0,0,0,0 desde todos los lados y seguramente se extenderá a toda la pantalla
Es un enfoque equivocado. Debe usar scrollView de WKWebView.
Necesita reservar espacio para la imagen y el botón con márgenes html usando javascript
[NSString stringWithFormat:@"document.body.style.margin = '%dpx %dpx %dpx %dpx'", (int)margins.top, (int)margins.right, (int)margins.bottom, (int)margins.left]o directamente en el cuerpo html si puede acceder a él.
Agregue una vista de imagen y un botón en el scrollView de WKWebView.