Habilitar el zoom / pellizcar en UIWebView


106

Tengo un UIWebView con un archivo pdf. Funciona bien. Pero, ¿cómo puedo habilitar el zoom en el archivo pdf?

Respuestas:



46

puedes usar webView.scalesPageToFit=YES;programáticamente

Si está utilizando en xib que solo click the check box "Scaling" scales Page to fit


29

Esta lógica para hacer zoom de UIWebView, no es necesario agregar UIWebView en UIScrollView

Bueno, el único problema webView.scalesPageToFit = YES;es que cambiará el contenido inicial del tamaño de fuente, pero encontré otra opción

Agregar <UIWebViewDelegate, UIScrollViewDelegate>a su archivo .h

Creación de tu UIWebView.

self.mWebview = [[UIWebView alloc] init];
self.mWebview.delegate = self; /// set delegate method of UIWebView
self.mWebview.frame = CGRectMake(0, 35, self.view.bounds.size.width, self.view.bounds.size.height - 80); // set frame whatever you want..
[self.mWebview setOpaque:NO];
self.mWebview.backgroundColor = [UIColor clearColor];
[self.view addSubview:self.mWebview];

Con carga de archivo / contenido HTML.

NSString* htmlString = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"File Name"ofType:@"html"] encoding:NSUTF8StringEncoding error:nil];
[self.mWebview loadHTMLString:htmlString baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]];


#pragma mark -
#pragma mark - Webview Delegate Methods

- (void) webViewDidFinishLoad:(UIWebView *)webView
{
    webView.scrollView.delegate = self; // set delegate method of UISrollView
    webView.scrollView.maximumZoomScale = 20; // set as you want.
    webView.scrollView.minimumZoomScale = 1; // set as you want.

    //// Below two line is for iOS 6, If your app only supported iOS 7 then no need to write this.
    webView.scrollView.zoomScale = 2;
    webView.scrollView.zoomScale = 1;
}

#pragma mark -
#pragma mark - UIScrollView Delegate Methods

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale
{
    self.mWebview.scrollView.maximumZoomScale = 20; // set similar to previous.
}

NOTA: Tuve que probar en Mac OS X - 10.9.3 con Xcode 5.1.1 y la versión de iOS 6.1 y posterior.

Espero que esto te sea de ayuda. :)


1
El scrollViewDidEndZooming no era necesario para que el zoom funcionara correctamente. ¡No estoy seguro de cuál es la intención de ese código, ya que simplemente restablece el mismo valor que se estableció anteriormente al mismo valor exacto!
Norman H

1
Ya exactamente, ¿por qué se necesita la parte scrollViewDidEndZooming? Pero aparte de eso, excelente respuesta. Hizo que incluso las páginas se ampliaran a las que no se les hacía zoom simplemente estableciendo la propiedad "Escala la página para ajustarla".
GKK

25

Sé que esta pregunta es bastante antigua, pero para todos los que usan un guión gráfico y prefieren una respuesta visual aquí está. Simplemente marque esta casilla en el Inspector de atributos de WebView:

ingrese la descripción de la imagen aquí


18

Si quieres hacerlo mediante programación, usa

webView.scalesPageToFit = true; 

Si está utilizando un guión gráfico, debe marcar la casilla de verificación "Escala" escalas Página para ajustar ingrese la descripción de la imagen aquí


6

DEBE establecer scalePageToFit = YES para que cualquier pellizco y zoom funcione en un UIWebView. Funciona para mi.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.