Aktivieren Sie das Zoomen / Kneifen in UIWebView


106

Ich habe eine UIWebView mit einer PDF-Datei. Es funktioniert gut. Aber wie kann ich das Zoomen der PDF-Datei aktivieren?

Antworten:


231

Stellen Sie sicher, dass Sie "Skalierungsseite passend" aktiviert haben.


Haben Sie Vorschläge zur Zoomleistung von PDF? Ich habe einen nervigen schwarzen Effekt beim Zoomen.
0wn3r

1
es ermöglicht das Zoomen, ändert aber den anfänglichen Skalierungsfaktor
Daniel

Arbeit ist aber dies verursacht Probleme mit anderen Dingen .. zum Beispiel stackoverflow.com/questions/33617217/…
jose920405

Funktioniert bei mir. Vielen Dank!
Businesscasual

46

Sie können webView.scalesPageToFit=YES;programmgesteuert verwenden

Wenn Sie in xib als nur verwenden click the check box "Scaling" scales Page to fit


29

Mit dieser Logik zum Zoomen von UIWebView muss UIWebView nicht zu UIScrollView hinzugefügt werden

Nun, das einzige Problem webView.scalesPageToFit = YES;ist, dass es den anfänglichen Inhalt der Schriftgröße ändert, aber ich habe eine andere Option gefunden

Fügen Sie <UIWebViewDelegate, UIScrollViewDelegate>Ihrer .h-Datei hinzu

Erstellung Ihrer 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];

Mit HTML-Datei / Inhalt laden.

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.
}

HINWEIS: Ich musste unter Mac OS X - 10.9.3 mit Xcode 5.1.1 und iOS Version 6.1 und höher testen.

Ich hoffe das wird hilfreich für dich. :) :)


1
Das scrollViewDidEndZooming wurde für mich nicht benötigt, damit das Zoomen richtig funktioniert. Ich bin mir nicht sicher, was die Absicht dieses Codes ist, da er nur den gleichen Wert zurücksetzt, der zuvor auf genau den gleichen Wert gesetzt wurde!
Norman H

1
Ja genau, warum wird der scrollViewDidEndZooming-Teil überhaupt benötigt? Aber anders als das, hervorragende Antwort. Es wurden sogar die Seiten gezoomt, die nicht gezoomt wurden, indem nur die Eigenschaft "Skalierte Seite passend" festgelegt wurde.
GKK

25

Ich weiß, dass diese Frage ziemlich alt ist, aber für alle, die ein Storyboard verwenden und hier eine visuelle Antwort bevorzugen, ist sie es. Aktivieren Sie einfach dieses Kontrollkästchen im Attributinspektor von WebView:

Geben Sie hier die Bildbeschreibung ein


18

Wenn Sie dies programmgesteuert tun möchten, verwenden Sie

webView.scalesPageToFit = true; 

Wenn Sie ein Storyboard verwenden, müssen Sie das Kontrollkästchen "Skalieren" aktivieren Geben Sie hier die Bildbeschreibung ein


6

Sie MÜSSEN scalePageToFit = YES setzen, damit das Kneifen und Zoomen in einer UIWebView funktioniert. Es funktioniert für mich.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.