Bật tính năng phóng to / chụm trên UIWebView


106

Tôi có UIWebView với tệp pdf. Nó hoạt động tốt. Nhưng làm cách nào để kích hoạt tính năng phóng to trên tệp pdf?

Câu trả lời:


231

Đảm bảo rằng bạn đã chọn "Cân trang cho vừa"


Bạn có đề xuất nào liên quan đến hiệu suất phóng to trên PDF không? Tôi có một hiệu ứng màu đen khó chịu khi thu phóng.
0wn3r

1
nó cho phép phóng to, nhưng thay đổi hệ số tỷ lệ ban đầu
Daniel

Công việc nhưng nguyên nhân này vấn đề với những thứ khác .. ví dụ stackoverflow.com/questions/33617217/...
jose920405

Làm việc cho tôi. Cảm ơn!
công việc thông thường

46

bạn có thể sử dụng webView.scalesPageToFit=YES;theo chương trình

Nếu bạn đang sử dụng trong xib thì chỉ click the check box "Scaling" scales Page to fit


29

Logic này để phóng to UIWebView, không cần thêm UIWebView trên UIScrollView

Chỉ có vấn đề webView.scalesPageToFit = YES;là, nó sẽ thay đổi nội dung ban đầu của kích thước phông chữ nhưng tôi đã tìm thấy tùy chọn khác

Thêm vào tệp .h<UIWebViewDelegate, UIScrollViewDelegate> của bạn

Tạo của bạn 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];

Với tải tệp / nội dung 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.
}

LƯU Ý: Tôi đã phải thử nghiệm trên Mac OS X - 10.9.3 với Xcode 5.1.1 và iOS phiên bản 6.1 trở lên.

Tôi hy vọng điều này sẽ hữu ích cho bạn. :)


1
Tôi không cần đến scrollViewDidEndZooming để thu phóng hoạt động chính xác. Không chắc chắn mục đích của mã đó là gì vì nó chỉ đang đặt lại cùng một giá trị đã được đặt trước đó về cùng một giá trị!
Norman H

1
Chính xác là, tại sao phần scrollViewDidEndZooming lại cần thiết? Nhưng khác hơn thế, câu trả lời tuyệt vời. Nó làm cho ngay cả những trang không được thu phóng bằng cách chỉ đặt thuộc tính "Cân trang cho vừa".
GKK

25

Tôi biết câu hỏi này khá cũ, nhưng đối với tất cả những ai đang sử dụng bảng phân cảnh và thích một câu trả lời trực quan thì đây là câu hỏi. Chỉ cần chọn hộp này trong Trình kiểm tra thuộc tính của WebView:

nhập mô tả hình ảnh ở đây


18

Nếu bạn muốn làm bằng lập trình thì hãy sử dụng

webView.scalesPageToFit = true; 

Nếu bạn đang sử dụng bảng phân cảnh thì bạn phải đánh dấu vào hộp kiểm "Chia tỷ lệ" tỷ lệ Trang cho vừa nhập mô tả hình ảnh ở đây


6

Bạn PHẢI đặt scalePageToFit = YES cho bất kỳ thao tác chụm và thu phóng nào để hoạt động trên UIWebView. Nó làm việc cho tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.