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?

David
fonte

Respostas:

231

Certifique-se de que marcou "Escala página para caber"

JEzu
fonte
Você tem alguma sugestão sobre o desempenho de zoom no PDF? Eu tenho um efeito preto irritante no zoom.
0wn3r
1
permite o zoom, mas muda o fator de escala inicial
Daniel,
Trabalho, mas isso causa problemas com outras coisas .. por exemplo stackoverflow.com/questions/33617217/…
jose920405
Funciona para mim. Obrigado!
businesscasual
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

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

iPatel
fonte
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

Lambreta
fonte
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

Ashu
fonte
6

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

Sargis
fonte