Веб-страница в UIWebView не может автоматически изменить размер, если ширина UIWebView меньше ширины окна - PullRequest
3 голосов
/ 08 апреля 2011

Я сделал простой тестовый проект, содержащий только один UIWebView на UIView, заполнил окно.Когда ширина UIWebView совпадает с шириной UIView, все работает хорошо.Когда ширина UIWebView меньше ширины контейнера, горизонтальная полоса прокрутки появляется нерегулярно.Веб-страница, которую я загружаю, является локальным HTML-файлом.Ширина не установлена, поэтому она должна соответствовать ширине браузера / UIWebView.

Пожалуйста, помогите.Спасибо.

The iPad simulator.

Ответы [ 4 ]

8 голосов
/ 14 мая 2011

метод 1. webView.scalePageToFit = YES, но когда ширина веб-вида изменяется, размер шрифта веб-страницы изменится соответственно, чтобы решить эту проблему, вы можете попробовать метод 2:

метод 2. динамически установить ширину веб-вида в вашем коде Objective C, чтобы при изменении ширины UIWebView измените ширину веб-страницы HTML, вызвав скрипт javascript.

int webViewWidth = isPortraitOrLandscape ? 768:1024; // the dynamic width of the webView
NSString *javascript = [NSString stringWithFormat:@"document.getElementsByTagName('body')[0].style.width = '%dpx'", webViewWidth];
[webView stringByEvaluatingJavaScriptFromString:javascript];

при этом ширина веб-просмотра может быть сопоставлена ​​с реальной веб-страницей HTML.

4 голосов
/ 07 августа 2013

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

Мое исправление состояло в том, чтобы принудительно заставить окно просмотра в html, выполнив некоторый хитрый javascript:

javascript = [NSString stringWithFormat:@"var viewPortTag=document.createElement('meta');  \
              viewPortTag.id='viewport';  \
              viewPortTag.name = 'viewport';  \
              viewPortTag.content = 'width=%d; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;';  \
              document.getElementsByTagName('head')[0].appendChild(viewPortTag);" , (int)authWebView.bounds.size.width];

[authWebView stringByEvaluatingJavaScriptFromString:javascript];

Ваш milage может варьироваться в зависимости от других настроек окна просмотра, которые вам могут понадобиться или не понадобиться, или если на вашей веб-странице уже есть метатег, определяющий область просмотра.

Идея JavaScript возникла из этого ответа: Как вставить метатег без использования jquery append?

1 голос
/ 08 апреля 2011

Вы можете установить явную ширину для вашего окна просмотра, включив метатег в ваш <head>, например:

<meta name = "viewport" content = "width = 590">

См. Руководство по веб-контенту Safari .

0 голосов
/ 08 апреля 2011

Тир, чтобы сделать веб-просмотр режим Масштаб для заполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...