Как я могу увеличить масштаб UIWebView, который находится внутри UIScrollView?

132

У меня есть UIWebViewвнутри UIScrollView(scrollview содержит другой компонент)

Я попытался включить мультитач как на Interface Builder или ПРОГРАММНЫЕ на UIWebViewно он все еще не может увеличить для HTML, мне нужно обрабатывать как приближать на UIScrollViewи UIWebView? Или что-то, что мне не нужно устанавливать?

calendarw
источник
2
scalesPageToFit = YESэто работает, но это меняет размер вашего контента по умолчанию, посмотрите на мой ответ, это будет полезно для вас.
iPatel

Ответы:

348

Вы ДОЛЖНЫ установить scalePageToFit = YES для любого сжатия и масштабирования для работы в UIWebView.

Джон Гешрик
источник
2
Это хорошо, за исключением того, что теперь моя страница масштабируется, чтобы уместиться в представлении. Я создаю html-страницу в коде для отображения, и я хочу, чтобы она оставалась в прежнем размере, но позволяла моим пользователям увеличивать масштаб с помощью щипкового увеличения
Дэн Ф.
33
Добавьте следующий метатег в заголовок документа HTML: <meta name = 'viewport' content = 'initial-scale = 1.0,
Maximum
2
Как я могу сделать то же самое с внешним веб-сайтом? То есть я установил начальное масштабирование, и после этого пользовательское масштабирование будет включено.
Уильям Джокуш
Привет, все работает нормально. Пейджинг, ZoomIn / Out и т.д ... Но у меня есть одна проблема в этом. Мое приложение работает в обоих направлениях (портрет и пейзаж). Теперь, в портретном изображении, я должен провести страницу 2-3 раза, чтобы перейти на следующую страницу. Но в ландшафте работает нормально. Я взял веб-просмотр внутри scrollview и scrollview подкачки. Но когда я попытался провести прокрутку, чтобы перейти на следующую страницу, мне пришлось провести по ней 2–3 раза, чтобы перейти на следующую страницу (в портретном режиме). Любая идея относительно того же. Спасибо за помощь.
Nishant B,
идеальный ответ ... Спасибо
AL̲̳I
12

ОК, вам нужно сделать как выше, так и следующее. У меня был веб-вид на главном экране, и это не сработало.

  1. Как и выше, вы сначала должны поместить UIScrollView в главное представление, а затем поместить веб-представление в представление прокрутки.
  2. Как указано выше, реализуйте <UIScrollViewDelegate>в своем контроллере представления, перетащите делегат представления прокрутки в контроллер представления в Interface Builder и реализуйте viewForZoomingInScrollViewметод. Это должно вернуть указатель на UIScrollView (вернуть myScrollView).
  3. Я создал свойства IBOutlet как для веб-представления, так и для представления прокрутки - свяжите их в NIB с вашим контроллером представления.
  4. В представлении прокрутки перейдите в Инспектор атрибутов, установите максимальные и минимальные коэффициенты масштабирования (я установил от 0,5 до 5,0, что хорошо работает).
  5. В веб-представлении в инспекторе атрибутов:
  6. В разделе Web View выберите Scales Pages To Fit.
  7. В разделе «Вид» выберите для режима «Левый верх»
  8. В разделе «Просмотр» внизу установите флажки «Взаимодействие с пользователем включено» и «Множественное касание включено».
Джей Имерман
источник
3

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

Скажем, у вас есть в <head>:

<meta id="vp" name="viewport" content="width=768,initial-scale=1.0">

Чтобы увеличить до 4x, и при этом позволить пользователю изменять масштаб, измените содержимое дважды:

var vp = document.getElementById('vp');
vp.content = "width=767,minimum-scale=4.0,maximum-scale=4.0,user-scalable=yes";
vp.content = "width=768,minimum-scale=0.25,maximum-scale=10.0,user-scalable=yes";

Переключение ширины очень важно - в противном случае Mobile Safari будет иметь серьезные ошибки перерисовки (из-за чрезмерной оптимизации).

Вы не можете просто установить initial-scaleснова - это игнорируется во второй раз.

robocat
источник
2

Вам нужно реализовать метод viewForZoomingInScrollView в вашем контроллере, иначе масштабирование ничего не даст. (Я действительно не знаю, зачем это нужно, но вот и все.)

Для получения подробной информации см. Http://developer.apple.com/iphone/library/documentation/WindowsViews/Conceptual/UIScrollView_pg/ZoomZoom/ZoomZoom.html .

apenwarr
источник