เปิดใช้งานการซูม / บีบนิ้วบน UIWebView


106

ฉันมี UIWebView พร้อมไฟล์ pdf มันทำงานได้ดี แต่ฉันจะเปิดใช้งานการซูมไฟล์ pdf ได้อย่างไร

คำตอบ:


231

ตรวจสอบว่าคุณได้เลือก "หน้าเครื่องชั่งพอดี"


คุณมีข้อเสนอแนะเกี่ยวกับประสิทธิภาพการซูมบน PDF หรือไม่? ฉันมีเอฟเฟกต์สีดำที่น่ารำคาญในการซูม
0wn3r

1
มันเปิดใช้งานการซูม แต่เปลี่ยนปัจจัยสเกลเริ่มต้น
Daniel

ทำงานได้ แต่ทำให้เกิดปัญหากับสิ่งอื่น .. ตัวอย่างเช่นstackoverflow.com/questions/33617217/…
jose920405

ใช้ได้ผลสำหรับฉัน ขอบคุณ!
businesscasual

46

คุณสามารถใช้แบบเป็นwebView.scalesPageToFit=YES;โปรแกรมได้

หากคุณใช้ใน xib มากกว่าเพียง click the check box "Scaling" scales Page to fit


29

Logic นี้สำหรับการซูม UIWebView ไม่จำเป็นต้องเพิ่ม UIWebView บน UIScrollView

ปัญหาเดียว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 ไม่จำเป็นสำหรับฉันเพื่อให้การซูมทำงานได้อย่างถูกต้อง ไม่แน่ใจว่าเจตนาของรหัสนั้นคืออะไรเนื่องจากเพิ่งรีเซ็ตค่าเดิมที่ตั้งไว้ก่อนหน้านี้เป็นค่าเดียวกันทั้งหมด!
Norman H

1
ใช่แล้วทำไมส่วน scrollViewDidEndZooming จึงจำเป็น แต่นอกเหนือจากนั้นคำตอบที่ยอดเยี่ยม มันทำให้แม้แต่หน้าเหล่านั้นซูมซึ่งไม่ได้รับการซูมเพียงแค่ตั้งค่าคุณสมบัติ "หน้ามาตราส่วนให้พอดี"
GKK

25

ฉันรู้ว่าคำถามนี้ค่อนข้างเก่า แต่สำหรับทุกคนที่ใช้สตอรีบอร์ดและต้องการคำตอบที่เป็นภาพอยู่ที่นี่ เพียงทำเครื่องหมายในช่องนี้ในตัวตรวจสอบคุณสมบัติของ WebView:

ใส่คำอธิบายภาพที่นี่


18

หากคุณต้องการทำโดยทางโปรแกรมให้ใช้

webView.scalesPageToFit = true; 

หากคุณกำลังใช้สตอรีบอร์ดคุณต้องทำเครื่องหมายที่ช่อง "การปรับขนาด" สเกลเพจให้พอดี ใส่คำอธิบายภาพที่นี่


6

คุณต้องตั้งค่า scalePageToFit = ใช่สำหรับการบีบและซูมเพื่อทำงานบน UIWebView มันได้ผลสำหรับฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.