web-dev-qa-db-fra.com

Activer le zoom / pincement sur UIWebView

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

103
David

Assurez-vous que vous avez coché la "page des échelles pour s'adapter"

228
JEzu

vous pouvez utiliser webView.scalesPageToFit=YES; par programmation

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

45
Nithinbemitk

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

Eh bien, seul problème avec webView.scalesPageToFit = YES; c'est ça, ça va changer 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 chargement de 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 dernière.

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

28
iPatel

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 des attributs de WebView:

enter image description here

23
Scooter

Si vous voulez le faire par programmation, utilisez

webView.scalesPageToFit = true; 

Si vous utilisez le storyboard, vous devez cocher la case "Mise à l'échelle" des échelles pour adapter la page enter image description here

16
Ashu

Vous DEVEZ définir échellesPageToFit = OUI pour que tout pincement et zoom fonctionne sur une UIWebView. Ça marche pour moi.

5
Sargis Gevorgyan