UIWebView Inside UIScrollView Tamaño del contenido

Debo agregar UIWebView y algunos botones y tags dentro de UIScrollView . He visto muchas preguntas sobre cómo agregar UIWebView dentro de UIScrollView pero lamentablemente no pudieron ayudarme a completar mi tarea. Tan amablemente no lo marques como duplicado o algo así.

Teóricamente, el problema se puede resolver siguiendo los siguientes pasos:

1) Haga UIWebView una subvista de UIScrollView .

2) Llamar setScrollEnabled:NO para UIWebView para deshabilitar su desplazamiento nativo.

3) Establezca el tamaño de contenido de UIScrollView y UIWebView en el tamaño de la cadena HTML cargada dentro de UIWebview .

Estoy usando iOS 6 y StoryBoards. He agregado UIWebView como UIWebView de UIScrollView .

Luego en mi webViewDidFinishLoad , he usado lo siguiente:

  NSString *webHeight = [webView stringByEvaluatingJavaScriptFromString:@"document.height;"]; NSLog(@"WebView Height %@", webHeight); 

Eso me da la altura de la WebView.

En el StackOverFlow, he encontrado lo siguiente.

  CGRect frame = webView.frame; frame.size.height = 1; webView.frame = frame; CGSize fittingSize = [webView sizeThatFits:CGSizeZero]; frame.size = fittingSize; webView.frame = frame; NSLog(@"size: %f, %f", fittingSize.width, fittingSize.height); 

Luego, he configurado el tamaño del UISCrollView en el tamaño UIWebView :

 mainScrollView.contentSize = webView.bounds.size; 

Puedo desplazarme hacia abajo, pero hay un espacio en blanco en la parte inferior y UIWebView no está haciendo su tamaño de acuerdo con el tamaño del contenido html cargado.

introduzca la descripción de la imagen aquí

Parece que UIScrollView ha cambiado su tamaño al tamaño del contenido de UIWebView pero UIWebView no lo muestra todo. ¿Cómo puedo resolver este problema?

Por favor, no me aconsejes sobre la documentation de Apple que dice que no debes usar UIWebView dentro de UIScrollView . Ya lo sé, pero quiero usarlo según mi requisito de proyecto.

Creo que puedo arrojar algo de luz aquí. Creo que estás confundiendo el tamaño del marco y el tamaño del contenido. Primero describiré la metodología, luego hago sugerencias concretas.

Metodología

Tiene una vista web y ha deshabilitado correctamente el desplazamiento en ella y ha configurado el tamaño de contenido en todo el contenido web. También debe configurar el tamaño del marco para el tamaño completo del contenido web. A continuación, agregaVer este en el scrollView en origen (0,0). Establezca el contenido de scrollViewSize en el tamaño completo del contenido web. Establezca el marco scrollView en los límites de viewController.view.

Sugerencias concretas

  • El código "fittingSize" que publicaste no se ve bien para mí. El propósito de ese código es establecer el marco de la webView. Use NSLog o puntos de corte para averiguar si está configurando el tamaño completo del contenido web.
  • Tenga en count que el propósito del código javascript que publicó es el mismo que el código "fittingSize" que publicó. Verifique para ver cuál produce el resultado correcto.
  • Intente descifrar los tamaños de ttwig de webView y scrollView para ayudarlo a depurar. La mejor manera de hacerlo es establecer diferentes colors de background como este: setBackgroundColor:[UIColor networkingColor]
  • Mi mejor suposition es que webView.frame.size no se establece lo suficientemente grande.

He encontrado la misma situación que webView no refleja el cambio de tamaño de fotogtwig, queda un espacio en blanco mientras se desplaza hacia abajo como mencionó Jessica. Revisé mi proyecto y descubrí que habilitaba la function autoLayout, por lo que las soluciones que encontré son:

  1. deshabilitar autoLayout
  2. agregue la restricción de altura a webView, luego de cambiar el tamaño del marco webView, utilizando el siguiente código:

    self.webViewHeightConstraint.constant = fittingSize.height; [webView updateConstraints];

Para get la altura del contenido de un UIWebView, recomiendo la respuesta de 'Phenomena' aquí: http://stackoverflow.com (No es la respuesta aceptada, la siguiente.) Sugiere NO usar 'CGSizeZero', y da una mejor solución