Включить масштабирование / сжатие в 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.