Włącz powiększanie / szczypanie w UIWebView

106

Mam UIWebView z plikiem pdf. To działa dobrze. Ale jak mogę włączyć powiększanie w pliku PDF?

David
źródło

Odpowiedzi:

231

Upewnij się, że zaznaczyłeś „Dopasuj stronę ze skalami”

JEzu
źródło
Czy masz jakieś sugestie dotyczące wydajności powiększania w formacie PDF? Mam irytujący czarny efekt podczas powiększania.
0wn3r
1
umożliwia powiększanie, ale zmienia początkowy współczynnik skali
Daniel
Działa
Pracuje dla mnie. Dzięki!
biznesowy
46

możesz używać webView.scalesPageToFit=YES;programowo

Jeśli używasz w xib niż tylko click the check box "Scaling" scales Page to fit

Nithinbemitk
źródło
29

Ta logika do powiększania UIWebView, nie ma potrzeby dodawania UIWebView na UIScrollView

Cóż, jedynym problemem webView.scalesPageToFit = YES;jest to, że zmieni początkową zawartość rozmiaru czcionki, ale znalazłem inną opcję

Dodaj <UIWebViewDelegate, UIScrollViewDelegate>do swojego pliku .h

Stworzenie Twojego 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];

Z załadowanym plikiem / treścią 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.
}

UWAGA: Testowałem na Mac OS X - 10.9.3 z Xcode 5.1.1 i iOS w wersji 6.1 i późniejszych.

Mam nadzieję, że będzie to pomocne dla Ciebie. :)

iPatel
źródło
1
ScrollViewDidEndZooming nie był potrzebny, aby powiększanie działało poprawnie. Nie jestem pewien, jaki jest cel tego kodu, ponieważ po prostu resetuje tę samą wartość, która została ustawiona wcześniej, na dokładnie tę samą wartość!
Norman H
1
No właśnie, dlaczego w ogóle potrzebna jest część scrollViewDidEndZooming? Ale poza tym świetna odpowiedź. Powiększyło nawet te strony, które nie były powiększane, po prostu ustawiając właściwość „Dopasuj stronę”.
GKK
25

Wiem, że to pytanie jest dość stare, ale dla każdego, kto używa storyboardu i woli wizualną odpowiedź, oto ona. Po prostu zaznacz to pole w Inspektorze atrybutów WebView:

wprowadź opis obrazu tutaj

Skuter
źródło
18

Jeśli chcesz to zrobić programowo, użyj

webView.scalesPageToFit = true; 

Jeśli używasz scenorysu, musisz zaznaczyć pole wyboru „Skalowanie” skaluje stronę, aby dopasować wprowadź opis obrazu tutaj

Ashu
źródło
6

MUSISZ ustawić scalesPageToFit = YES dla dowolnego szczypania i powiększania, aby działało na UIWebView. To działa dla mnie.

Sargis
źródło