UIWebView'da yakınlaştırmayı / sıkıştırmayı etkinleştirin


106

Bir pdf dosyası içeren bir UIWebView var. İyi çalışıyor. Ancak pdf dosyasında yakınlaştırmayı nasıl etkinleştirebilirim?

Yanıtlar:


231

"Ölçekler sayfasına sığdır" ı işaretlediğinizden emin olun


PDF'deki yakınlaştırma performansı ile ilgili herhangi bir öneriniz var mı? Yakınlaştırmada can sıkıcı bir siyah efektim var.
— 0wn3r

1
yakınlaştırmayı etkinleştirir, ancak başlangıç ​​ölçek faktörünü değiştirir
— Daniel

İş ama bu başka şeylerde sorunlara neden oluyor .. örneğin stackoverflow.com/questions/33617217/…
— jose920405

Benim için çalışıyor. Teşekkürler!
— businesscasual

46

webView.scalesPageToFit=YES;programlı olarak kullanabilirsiniz

Xib'de kullanıyorsanız click the check box "Scaling" scales Page to fit


29

UIWebView'in yakınlaştırılması için bu Mantık, UIScrollView'a UIWebView eklemeye gerek yoktur

Tek sorun webView.scalesPageToFit = YES;şu ki, yazı tipi boyutunun ilk içeriğini değiştirecek, ancak başka bir seçenek buldum

Ekle <UIWebViewDelegate, UIScrollViewDelegate>sizin için .h dosyasında

Senin yaratılışı 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 dosyası / içeriği yükle.

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

NOT: Mac OS X - 10.9.3 üzerinde Xcode 5.1.1 ve iOS 6.1 ve sonraki sürümleri test etmem gerekiyordu.

Umarım bu size yardımcı olur. :)


1
Yakınlaştırmanın düzgün çalışmasını sağlamak için scrollViewDidEndZooming gerekli değildi. Daha önce ayarlanmış olan aynı değeri tam olarak aynı değere sıfırlamak olduğundan, bu kodun amacının ne olduğundan emin değilim!
— Norman H

1
Evet, tam olarak, neden scrollViewDidEndZooming kısmına ihtiyaç var? Ama bunun dışında mükemmel cevap. Sadece "Ölçekler sayfası sığacak şekilde" özelliğini ayarlayarak yakınlaştırılmayan sayfaları bile yakınlaştırdı.
— GKK

25

Bu sorunun oldukça eski olduğunu biliyorum, ancak bir storyboard kullanan ve burada görsel bir cevap tercih eden herkes için öyle. WebView's Attributes Inspector'da şu kutuyu işaretlemeniz yeterlidir:

görüntü açıklamasını buraya girin


18

Programlı olarak yapmak istiyorsanız şunu kullanın:

webView.scalesPageToFit = true; 

Film şeridi kullanıyorsanız, "Ölçekleme" onay kutusunu işaretlemeniz gerekir. görüntü açıklamasını buraya girin


6

Bir UIWebView üzerinde çalışmak için herhangi bir kıstırma ve yakınlaştırma için scalesPageToFit = EVET ayarlamanız GEREKİR. Benim için çalışıyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.