Aktifkan zooming / pinch di UIWebView

106

Saya memiliki UIWebView dengan file pdf. Ini bekerja dengan baik. Tapi bagaimana saya bisa mengaktifkan zooming pada file pdf?

David
sumber

Jawaban:

231

Pastikan Anda mencentang "Scales page to fit"

JEzu
sumber
Apakah Anda punya saran tentang kinerja zoom pada PDF? Saya memiliki efek hitam yang mengganggu saat memperbesar.
0wn3r
1
ini mengaktifkan zoom, tetapi mengubah faktor skala awal
Daniel
Bekerja tetapi ini menyebabkan masalah dengan hal-hal lain .. misalnya stackoverflow.com/questions/33617217/…
jose920405
Bekerja untuk saya. Terima kasih!
businesscasual
46

Anda dapat menggunakan secara webView.scalesPageToFit=YES;terprogram

Jika Anda menggunakan di xib daripada hanya click the check box "Scaling" scales Page to fit

Nithinbemitk
sumber
29

Logika ini untuk memperbesar UIWebView, tidak perlu menambahkan UIWebView di UIScrollView

Satu-satunya masalah webView.scalesPageToFit = YES;adalah itu, itu akan mengubah konten awal ukuran font tetapi saya menemukan opsi lain

Tambahkan <UIWebViewDelegate, UIScrollViewDelegate>ke file .h Anda

Kreasi Anda 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];

Dengan memuat file / konten 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.
}

CATATAN: Saya harus menguji pada Mac OS X - 10.9.3 dengan Xcode 5.1.1 dan iOS versi 6.1 dan yang terakhir.

Saya harap ini akan membantu Anda. :)

iPatel
sumber
1
ScrollViewDidEndZooming tidak diperlukan agar saya dapat melakukan zooming dengan benar. Tidak yakin apa maksud kode itu karena hanya menyetel ulang nilai yang sama yang ditetapkan sebelumnya ke nilai yang sama persis!
Norman H
1
Ya tepatnya, mengapa bagian scrollViewDidEndZooming diperlukan? Tapi selain itu, jawaban yang luar biasa. Itu bahkan membuat halaman-halaman itu diperbesar yang tidak diperbesar hanya dengan mengatur properti "Scales page to fit".
GKK
25

Saya tahu pertanyaan ini cukup lama, tetapi untuk semua orang yang menggunakan papan cerita dan lebih memilih jawaban visual ini dia. Cukup centang kotak ini di Atribut Inspektur WebView:

masukkan deskripsi gambar di sini

Skuter
sumber
18

Jika Anda ingin melakukannya secara terprogram maka gunakan

webView.scalesPageToFit = true; 

Jika Anda menggunakan storyboard maka Anda harus mencentang kotak "Scaling" menskalakan Halaman agar sesuai masukkan deskripsi gambar di sini

Ashu
sumber
6

Anda HARUS menyetel scalePageToFit = YES untuk melakukan pinching dan zooming apa pun agar bekerja pada UIWebView. Ini bekerja untuk saya.

Sargis
sumber