UIWebView contentInset без дополнительной высоты внизу

Я создаю контроллер представления, который использует веб-представление, которое скользит позади панели навигации и строки состояния. Для этого я устанавливаю свойство webView.scrollView.contentInset в верхнюю вставку 64.

Однако это не уменьшает количество области, которую веб-просмотр хочет занять, поэтому, если страница меньше, чем экранная, она имеет 64 пикселя белого пространства внизу для прокрутки. Представления веб-страниц находятся в вертикальном UIPageViewController, поэтому это нарушает пейджинг. Есть ли способ избавиться от этого лишнего пространства?

Ответ 1

Я как-то справился с этой проблемой, отключив прокрутку на коротких страницах. В основном я использую -stringByEvaluatingJavaScriptFromString: для запуска некоторого JavaScript внутри страницы, которая выходит из document.body и вычисляет положение нижней части самого нижнего элемента. (document.body сам по себе не меньше размера окна просмотра, поэтому я не могу посмотреть его размер.) Затем, обратно в Objective-C -land, я сравниваю это с высотой веб-представления (за исключением вставки), и если это меньше, я отключу прокрутку. Это не идеальное решение, но оно охватывает худшие симптомы.

Если кто-то может придумать лучшее решение, чем это, я бы хотел услышать об этом! В любом случае, я не могу присудить щедрость себе, поэтому кто-то получит его.

Ответ 2

Похоже, вам нужно настроить webView.scrollView.contentSize и настроить высоту на 64. Вам может потребоваться предоставить дополнительную информацию о том, как она скользит за панель навигации и строку состояния, чтобы помочь мне ответить на это. Я бы посмотрел на этот раздел руководства по программированию прокрутки:

http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/UIScrollView_pg/CreatingBasicScrollViews/CreatingBasicScrollViews.html

Ответ 3

Вы пробовали что-то вроде настройки вложений для прокрутки webview scrollview? Пример:

    webView.scrollView.contentInset = UIEdgeInsetsMake(0, 0,64, 0)

Ответ 4

Измените клипсоны.

webView.clipsToBounds = NO;

Это сделает его содержимое видимым за пределами его рамки, поэтому установите его рамку как обычно, прямо под панелью навигации. Панель навигации будет полупрозрачной, и вы увидите ее содержимое под ней.

Ответ 5

Не забудьте отключить автозапуск для веб-представления!