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.