UIWebView не масштабирует контент для соответствия

У меня есть веб-представление, которое является верхним окном в иерархии и объявлено как показано ниже. Однако он не масштабирует страницы. Страницы выравниваются по верхнему левому краю, но не масштабируются, несмотря на то, что для свойства scaleesPageToFit установлено значение YES. Любая помощь будет принята с благодарностью.

webLookupView = [[UIWebView alloc] initWithFrame:CGRectMake(16, 63, 289, 327)]; webLookupView.backgroundColor = [UIColor lightGrayColor]; webLookupView.dataDetectorTypes = UIDataDetectorTypeAll; webLookupView.scalesPageToFit = YES; 

iOS5 дает лучшее решение

вызовите это из webViewDidFinishLoad

 - (void)zoomToFit { if ([theWebView respondsToSelector:@selector(scrollView)]) { UIScrollView *scrollView = [theWebView scrollView]; float zoom = theWebView.bounds.size.width / scrollView.contentSize.width; scrollView.minimumZoomScale = zoom; [scrollView setZoomScale:zoom animated:YES]; } } 

Впоследствии я обнаружил, что некоторые веб-страницы правильно масштабируются, но некоторые нет. Для веб-страниц, которые не масштабируются должным образом, javascript можно использовать для управления масштабированием следующим образом:

 NSString *jsCommand = [NSString stringWithFormat:@"document.body.style.zoom = 1.5;"]; [webLookupView stringByEvaluatingJavaScriptFromString:jsCommand]; 

Вы можете использовать приведенный ниже код:

 self.webView.scalesPageToFit = YES; self.webView.contentMode = UIViewContentModeScaleAspectFit; 

in - (void)webViewDidFinishLoad:(UIWebView *)webView method viewDidLoad или viewDidLoad

Если у вас есть доступ к html, который вы загружаете, вы можете вставить в заголовок следующий метатег:

  

в Swift2

 self.webView.scalesPageToFit = true self.webView.contentMode = UIViewContentMode.ScaleAspectFit 

Мое решение быстро:

«Масштабировать страницы в соответствии» в webView необходимо проверить в построителе интерфейса.

Используйте UIWebViewDelegate.

 func webViewDidFinishLoad(webView: UIWebView) { let zoom = webView.bounds.size.width / webView.scrollView.contentSize.width webView.scrollView.setZoomScale(zoom, animated: true) } 

Поскольку mprivate упоминает здесь, вы можете обновить уровень масштабирования UIWebView.

 - (void)webViewDidFinishLoad:(UIWebView *)theWebView { CGSize contentSize = theWebView.scrollView.contentSize; CGSize viewSize = theWebView.bounds.size; float rw = viewSize.width / contentSize.width; theWebView.scrollView.minimumZoomScale = rw; theWebView.scrollView.maximumZoomScale = rw; theWebView.scrollView.zoomScale = rw; } 

Другим способом достижения этого является введение js-кода в webViewDidFinishLoad, как говорит RunLoop .

 - (void)webViewDidFinishLoad:(UIWebView *)webView { CGFloat scale = 0.8; // the scale factor that works for you NSString *js = [NSString stringWithFormat:@"document.body.style.zoom = %f;",scale]; [webView stringByEvaluatingJavaScriptFromString:js]; } 

Для Swift 3 , используя эффективный ответ RunLoop :

self.webView.stringByEvaluatingJavaScript(from: "document.body.style.zoom = 1.5;")

В xCode 8.3.3 перейдите к раскадровке вида / сцены, где находится веб-представление, и проверьте страницу «Масштаб» для «Вставить» в разделе «Инспектор атрибутов». Также выберите «Масштаб для заполнения» в качестве режима содержимого.

Попробуйте это в представлении ViewController ViewDidLoad

 [self.myWebView setFrame:CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y, self.view.frame.size.width, self.view.frame.size.height)]; 
  • У меня также есть веб-представление, установленное на «scalePageToFit» и viewmode, установленное на «Aspect Fit» в моей раскадровке.

В построителе интерфейса есть опция «Масштабировать по размеру», поэтому она должна быть чем-то программным, чтобы сделать то же самое.

  • Рисование поэтапно в UIView (iPhone)
  • Использование хеша MD5 в строке в cocoa?
  • захват себя в этом блоке, вероятно, приведет к циклу сохранения
  • Создать случайное число в пределах диапазона?
  • Как использовать performSelector: withObject: afterDelay: с примитивными типами в cocoa?
  • Почему NSError нуждается в двойной косвенности? (указатель на указатель)
  • В чем разница между использованием CGFloat и float?
  • Как заполнить фоновое изображение UIView
  • Простое обнаружение движения iPhone
  • Передача параметров addTarget: действие: forControlEvents
  • Как вы можете читать файлы MIME-типа в объективе-c
  • Давайте будем гением компьютера.