UIWebViewでズーム/ピンチを有効にする


106

PDFファイルを含むUIWebViewがあります。正常に動作します。しかし、どうすればPDFファイルのズームを有効にできますか?

回答:


231

「ページを収まるように拡大縮小する」をチェックしたことを確認


PDFのズーム性能について何か提案はありますか?ズームで迷惑な黒の効果があります。
0wn3r 2014

1
ズームは可能ですが、初期の倍率を変更します
Daniel

仕事のものですが、これにより他の問題が発生します。たとえば、stackoverflow.com
questions / 33617217 /…

私のために働く。ありがとう!
businesscasual

46

webView.scalesPageToFit=YES;プログラムで使用できます

単によりもxibで使用している場合 click the check box "Scaling" scales Page to fit


29

UIWebViewのズームのためのこのロジック。UIScrollViewにUIWebViewを追加する必要はありません。

まあ唯一の問題 webView.scalesPageToFit = YES;は、それがフォントサイズの初期コンテンツを変更することですが、私は他のオプションを見つけました

追加<UIWebViewDelegate, UIScrollViewDelegate>あなたの.hファイル

あなたの作成 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];

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

注: Mac OS X-10.9.3とXcode 5.1.1およびiOSバージョン6.1以降でテストする必要がありました。

これがお役に立てば幸いです。:)


1
scrollViewDidEndZoomingは、ズームを正しく機能させるために必要ではありませんでした。以前に設定したのと同じ値をまったく同じ値にリセットするだけなので、そのコードの目的はわかりません!
ノーマンH

1
正確には、なぜscrollViewDidEndZoomingパーツがまったく必要なのですか?しかし、それ以外は素晴らしい答えです。「ページを合わせる」プロパティを設定するだけで、ズームされなかったページもズームしました。
GKK、

25

私はこの質問がかなり古いことを知っていますが、ストーリーボードを使用していて、ここで視覚的な答えを好むすべての人にとってそうです。WebViewの属性インスペクターでこのボックスをチェックするだけです:

ここに画像の説明を入力してください


18

プログラムで実行したい場合は、

webView.scalesPageToFit = true; 

ストーリーボードを使用している場合は、「スケーリング」チェックボックスにチェックを入れて、ページを合わせる ここに画像の説明を入力してください


6

ピンチとズームをUIWebViewで機能させるには、scalesPageToFit = YESを設定する必要があります。それは私のために働きます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.