2010-08-19 19 views
17

He tenido que cambiar un UIScrollView en un UIWebView debido a razones de formato.Cómo configurar el contenido y el tamaño del contenido en un UIWebView

Hay un problema sin embargo que tengo que ser capaz de obtener el contenido compensado de nuevo a 0, 0 (como yo estoy usando reutilizables UIWebView s y el cambio de contenido) y obtener el tamaño de contenido para que pueda colocar un botón en la parte inferior; pero UIWebView no parece tener esto.

Respuesta

8

La mejor manera que he encontrado para solucionar el problema fue:

  1. Crear una UIWebView
  2. ponerlo en un UIScrollView
  3. Agregue el HTML con "loadHTMLString"
  4. Usando el "- (void) webViewDidFinishLoad: (UIWebView *) {web View" método delegado que detecta el tamaño de la UIWebView

  5. Establecer el marco de la UIWebView con el tamaño de contenido.

  6. Retire la interacción de la UIWebView
  7. Ajuste el tamaño de contenido de la UIScrollView con el tamaño de contenido.

Luego se utilizó la funcionalidad UIScrollView en lugar de UIWebView.

Gracias -JM

+2

¿Qué haces en los pasos 5º y 7º? Tal vez, algún ejemplo de código? ¿Qué tamaño de contenido? – marko

+4

Creo que esta es una muy mala idea, ya que terminará creando un UIWebView que agotará todos sus recursos: crear una UIWebView que tenga miles de píxeles de altura es una mala noticia. – Lee

7

Utilice JavaScript.

creo que la siguiente línea debe hacer la magia:

[webView stringByEvaluatingJavaScriptFromString:@"window.scroll(0,0)"]; 
+0

Ill Inténtelo. ¿Qué tal obtener la altura del contenido para que pueda agregar un botón en la parte inferior de UIWebView? – jodm

+0

Hmmm. Este es más complicado. Creo que es posible. Supongo que debe tener en cuenta la altura de la vista web, la altura del HTML (mediante el uso de JavaScript) y el nivel de zoom actual.O bien, puede desactivar el zoom (si aún no lo hizo) y entonces será mucho más simple. Simplemente ubique su botón de modo que su parte inferior esté a unos pocos píxeles por encima de la altura de la vista web. debe ubicarlo sobre el HTML usando style/CSS (google para "css floating div"). –

+0

Por cierto, puede ubicar un botón Objective-C (UIButton) encima de la vista web. De esta forma, no necesitará aprender CSS o JavaScript en absoluto ... –

1

Una vez que el UIScrollView que está dentro del UIWebView, será fácil cambiar ContentOffset y contentSize. La información aquí sobre cómo conseguir la ScrollView: ScrollOffset in UIWebView?

3

Ahora usted puede pedir la propiedad contentSize de la propiedad de un scrollViewUIWebView. Esto le permite también cambiar el tamaño del contenido de esa vista web, usando CGSizeMake (width, height).

27

Este problema puede resolverse con bastante facilidad:

[[webView scrollView] setContentInset:UIEdgeInsetsMake(64, 0, 44, 0)]; 

Recuerde que UIEdgeInset es diferente de CGRect!
Puede encontrar una guía sobre UIEdgeInset in the iOS Developer Library.

1

Obras para mí

[[webView scrollView] setContentInset:UIEdgeInsetsMake(64, 0, 44, 0)]; 
+1

¿acabas de escribir ** exactamente ** la misma respuesta que la anterior? – agandi

+0

@agandi sí, también informé que esto funciona para mí. Porque no puedo marcar esa respuesta como útil con baja reputación –

Cuestiones relacionadas