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
Не забудьте отключить автозапуск для веб-представления!