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?

Réponses:



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


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


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


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


6

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.