2011-11-06 9 views
5

Lo que quiero hacer es establecer la escala de zoom inicial [y en algunos casos, el desplazamiento de contenido, pero eso es menos importante] para un sitio web externo. Pero una vez que la aplicación establece inicialmente el zoom y el desplazamiento, el usuario debe poder cambiarlos y la aplicación no debe interferir.UIWebView establece la escala de zoom inicial mediante programación al cargar un sitio web externo?

Alguna información relacionada está disponible here, here y here. Pero por lo que puedo decir, ninguno hace lo que quiero.

El enfoque de configuración de meta parece prometedor, pero ¿cómo lo configuraría cuando no controle el contenido html que se cargará?

Respuesta

26

probar este para ajustar el nivel de zoom inicial -

[webView stringByEvaluatingJavaScriptFromString:@"document. body.style.zoom = 5.0;"]; 

También no se olvide de establecer scalesPageToFit en NO y ya está.

Si establece esto en SÍ, la página web se ajusta a escala para que el usuario pueda acercar y alejar la imagen. Si NO, el zoom del usuario está desactivado. El valor predeterminado es no.

+2

Puse esto en webViewDidFinishLoad, y funciona muy bien, gracias! Pero sí quiero permitir que el usuario cambie mi zoom inicial. NO quiero que la página se ajuste a escala [que no es], pero el zoom del usuario se desactiva. –

+0

William, ¿has resuelto esto? – Tony

+0

@WilliamJockusch ¿Encontró una solución? – mhmdshawqi

1

Por qué no:

[self.webView.scrollView setZoomScale:2.0 animated:YES]; 
+0

Esto no funcionó para mí. – Luke

0

best one found intento de añadir etiqueta meta en su página HTML, en su tag.It se reparó en un abrir y cerrar de ojos. Pruebe el apple link y seleccione la metaetiqueta adecuada para usted.

0

si está cargando html y javascriptin uiwebview, en la ventana gráfica configurable user-scalable = 1.0.

3

Si desea ajustar el zoom inicial para su vista web y luego su vista web puede escalable. Puede intentar agregar una metaetiqueta en la etiqueta principal de su cadena HTML en el método de protocolo webViewDidFinishLoad. Puede cambiar 'escala inicial', 'escala mínima' y 'escala máxima' para adaptarse a sus necesidades. Se parece a esto:

- (void)webViewDidFinishLoad:(UIWebView *)webView { 
    NSString* js = 
    @"var meta = document.createElement('meta'); " \ 
    "meta.setAttribute('name', 'viewport'); " \ 
    "meta.setAttribute('content', 'width = device-width, initial-scale = 1.0,minimum-scale=1.0,maximum-scale=10.0 user-scalable = yes'); " \ 
    "document.getElementsByTagName('head')[0].appendChild(meta)"; 
    [webView stringByEvaluatingJavaScriptFromString: js]; 
} 
+0

Gracias, sé sobre estas etiquetas, pero no sé cómo implementarlas. Me salvaste el día. –

+0

Muchas gracias. –

Cuestiones relacionadas