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?

Odpowiedzi:


231

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


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


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


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


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


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


6

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.