Ativar zoom / pinça em UIWebView


106

Eu tenho um UIWebView com um arquivo pdf. Funciona bem. Mas como posso ativar o zoom no arquivo PDF?

Respostas:



46

você pode usar webView.scalesPageToFit=YES;programaticamente

Se você estiver usando no xib do que apenas click the check box "Scaling" scales Page to fit


29

Esta lógica para zoom de UIWebView, sem necessidade de adicionar UIWebView em UIScrollView

Bem, só problema com webView.scalesPageToFit = YES; é que ele mudará o conteúdo inicial do tamanho da fonte, mas eu encontrei outra opção

Adicione <UIWebViewDelegate, UIScrollViewDelegate>ao seu arquivo .h

Criação do seu 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];

Com carregamento de arquivo / conteúdo 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: Tive que testar no Mac OS X - 10.9.3 com Xcode 5.1.1 e iOS versão 6.1 e posterior.

Espero que isso seja útil para você. :)


1
O scrollViewDidEndZooming não era necessário para que o zoom funcionasse corretamente. Não tenho certeza de qual é a intenção desse código, pois ele apenas está redefinindo o mesmo valor definido anteriormente para o mesmo valor!
Norman H

1
Sim, por que a parte scrollViewDidEndZooming é necessária? Mas, fora isso, resposta excelente. Isso fez com que até mesmo as páginas fossem ampliadas, bastando definir a propriedade "Escalas para caber na página".
GKK

25

Eu sei que esta pergunta é muito antiga, mas para todos que estão usando um storyboard e preferem uma resposta visual aqui está. Basta marcar esta caixa no Inspetor de atributos do WebView:

insira a descrição da imagem aqui


18

Se você quiser fazer programaticamente, use

webView.scalesPageToFit = true; 

Se você estiver usando o storyboard, deverá marcar a caixa de seleção "Dimensionamento" escalas da página para caber insira a descrição da imagem aqui


6

Você DEVE definir scalePageToFit = YES para qualquer pinçamento e zoom para funcionar em um UIWebView. Funciona para mim.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.