Как я могу включить увеличение UIWebView, который внутри UIScrollView? - PullRequest
132 голосов
/ 08 февраля 2010

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

Я пытался включить мультитач на Интерфейсный Разработчик или Программный на UIWebView, но он все еще не может увеличить для HTML, нужно ли обрабатывать оба увеличения на UIScrollView а UIWebView? Или что-то, что я не должен устанавливать?

Ответы [ 4 ]

347 голосов
/ 30 мая 2010

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

12 голосов
/ 23 июня 2011

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

  1. Как и выше, сначала вы должны поместить UIScrollView в главном окне, а затем поместить веб-представление в виде прокрутки.
  2. Как и выше, внедрите <UIScrollViewDelegate> в свой контроллер представления, перетащите делегат представления прокрутки в контроллер представления в Интерфейсном Разработчике и реализуйте метод viewForZoomingInScrollView. Это должно вернуть указатель на UIScrollView (вернуть myScrollView).
  3. Я создал свойства IBOutlet как для веб-представления, так и для представления с прокруткой - свяжите их в NIB с вашим контроллером представления.
  4. В представлении прокрутки перейдите в Инспектор атрибутов, установите максимальные и минимальные коэффициенты масштабирования (я установил от 0,5 до 5,0, что хорошо работает).
  5. В веб-представлении в Инспекторе атрибутов:
  6. В разделе веб-просмотра выберите «Масштабировать страницы по размеру»
  7. В разделе «Вид» выберите «Режим», «Слева вверху»
  8. В разделе «Вид» внизу установите флажок «Взаимодействие с пользователем включено» и «Мультитач включено»
3 голосов
/ 12 сентября 2011

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

Скажем, у вас есть <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 снова - он игнорируется во второй раз.

2 голосов
/ 10 апреля 2010

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

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

...