Включить масштабирование / сжатие в UIWebView


106

У меня есть UIWebView с pdf-файлом. Работает нормально. Но как мне включить масштабирование pdf-файла?

Ответы:


231

Убедитесь, что вы отметили "Масштабировать страницу по размеру".


Есть ли у вас какие-либо предложения относительно производительности масштабирования в PDF? У меня раздражающий черный эффект при масштабировании.
— 0wn3r

1
он позволяет масштабировать, но изменяет начальный коэффициент масштабирования
— Даниэль

Работает, но это вызывает проблемы с другими вещами .. например stackoverflow.com/questions/33617217/…
— jose920405,

Работает для меня. Спасибо!
— businesscasual

46

вы можете использовать webView.scalesPageToFit=YES;программно

Если вы используете в xib, чем просто click the check box "Scaling" scales Page to fit


29

Эта логика для увеличения 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 = YES для любого сжатия и масштабирования для работы в UIWebView. Это работает для меня.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.