Activer le zoom / pincement sur UIWebView

106

J'ai un UIWebView avec un fichier pdf. Ça fonctionne bien. Mais comment puis-je activer le zoom sur le fichier pdf?

David
la source

Réponses:

231

Assurez-vous d'avoir coché "Mettre la page à l'échelle"

JEzu
la source
Avez-vous des suggestions concernant les performances de zoom sur PDF? J'ai un effet noir ennuyeux sur le zoom.
0wn3r
1
il permet le zoom, mais change le facteur d'échelle initial
Daniel
Le travail, mais cela pose des problèmes avec d'autres choses .. par exemple stackoverflow.com/questions/33617217/…
jose920405
Travaille pour moi. Merci!
businesscasual
46

vous pouvez utiliser par webView.scalesPageToFit=YES;programme

Si vous utilisez dans xib que juste click the check box "Scaling" scales Page to fit

Nithinbemitk
la source
29

Cette logique pour zoomer sur UIWebView, pas besoin d'ajouter UIWebView sur UIScrollView

Eh bien, le seul problème webView.scalesPageToFit = YES;est que cela changera le contenu initial de la taille de la police mais j'ai trouvé une autre option

Ajouter <UIWebViewDelegate, UIScrollViewDelegate>à votre fichier .h

Création de votre 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];

Avec charger le fichier / contenu 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.
}

REMARQUE: j'ai dû tester sur Mac OS X - 10.9.3 avec Xcode 5.1.1 et iOS version 6.1 et plus récente.

J'espère que cela vous sera utile. :)

iPatel
la source
1
Le scrollViewDidEndZooming n'était pas nécessaire pour que le zoom fonctionne correctement. Je ne sais pas quelle est l'intention de ce code car il réinitialise simplement la même valeur qui a été définie précédemment à la même valeur exacte!
Norman H
1
Ya exactement, pourquoi la partie scrollViewDidEndZooming est-elle nécessaire? Mais à part ça, superbe réponse. Il a même fait zoomer les pages qui n'étaient pas agrandies en définissant simplement la propriété «Mettre la page à l'échelle».
GKK
25

Je sais que cette question est assez ancienne, mais pour tous ceux qui utilisent un storyboard et préfèrent une réponse visuelle, la voici. Cochez simplement cette case dans l'inspecteur d'attributs de WebView:

entrez la description de l'image ici

Scooter
la source
18

Si vous voulez le faire par programme, utilisez

webView.scalesPageToFit = true; 

Si vous utilisez un storyboard, vous devez cocher la case "Mettre à l'échelle" les échelles de la page pour l'adapter entrez la description de l'image ici

Ashu
la source
6

Vous DEVEZ définir scalePageToFit = YES pour que tout pincement et zoom fonctionne sur un UIWebView. Ça marche pour moi.

Sargis
la source