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?

David
fuente

Respuestas:

231

Asegúrate de haber marcado "Escalas para ajustar la página"

JEzu
fuente
¿Tiene alguna sugerencia sobre el rendimiento del zoom en PDF? Tengo un efecto negro molesto al hacer zoom.
0wn3r
1
permite hacer zoom, pero cambia el factor de escala inicial
Daniel
El trabajo, pero esto causa problemas con otras cosas ... por ejemplo, stackoverflow.com/questions/33617217/…
jose920405
Funciona para mi. ¡Gracias!
businesscasual
46

puedes usar webView.scalesPageToFit=YES;programáticamente

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

Nithinbemitk
fuente
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. :)

iPatel
fuente
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í

Scooter
fuente
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í

Ashu
fuente
6

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

Sargis
fuente