UIWebView - автоматическое изменение размера, поэтому прокрутка (в самом webView) не требуется - PullRequest
9 голосов
/ 05 июня 2010

Я пытаюсь использовать UIWebView для отображения контента выше, чем на экране iPhone, без необходимости прокрутки самого UIWebView.

UIWebView помещается как подпредставление к UIScrollView вместе с некоторыми другими объектами, которые я хочу, чтобы UIScrollView прокручивал вверх и вниз с помощью UIWebView.

Я знаю, что вы можете сделать это с UITextView следующим образом:

CGRect frame = _textView.frame; frame.size.height = _textView.contentSize.height; _textView.frame = frame;

Но UIWebView не наследуется от UIScrollView и поэтому не содержит contentSize -свойства.

Мне бы очень хотелось, чтобы это было UIWebView, потому что данные, которые я получаю, находятся в HTML-блоках.

Спасибо!

Ответы [ 2 ]

14 голосов
/ 20 сентября 2010

На самом деле, Javascript не требуется! В UIView есть хороший метод:

- (CGSize)sizeThatFits:(CGSize)size

Вы передаете ему что-нибудь (не очень значимое здесь), и он возвращает размер, который ему нужен, используя его содержимое (подпредставления и т. Д.) Для вычисления размера.

Конечно, поскольку загрузка контента в UIWebView в асинхронном режиме, вы должны делать это после загрузки веб-просмотра, например, в методе UIWebViewDelegate:

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    CGSize size = [webView sizeThatFits: CGSizeMake(1.0f, 1.0f)]; // Pass about any size
    CGRect frame = webView.frame;
    frame.size.height = size.height;
    webView.frame = frame;
}

Et вуаля!

7 голосов
/ 05 июня 2010

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

Что-то вроде следующего должно сделатьуловка

int content_height = [[theWebView stringByEvaluatingJavaScriptFromString: @"document.body.offsetHeight"] integerValue];
CGRect rect = theWebView.frame;
rect.size.height = content_height;
theWebView.frame = rect;

Возможно, вам понадобится добавить некоторый коэффициент помадки к высоте содержимого.

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