SetFrame UIWebView - PullRequest
       19

SetFrame UIWebView

1 голос
/ 30 августа 2011

Я загружаю строку HTML в UIWebView.Когда UIWebView заканчивает загрузку, я изменяю его высоту следующим образом:

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    float newSize = [[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.scrollHeight"] floatValue];
    [self.webViewContent setFrame:CGRectMake(self.webViewContent.bounds.origin.x,
         self.webViewContent.bounds.origin.y, 
         self.webViewContent.frame.size.width, 
         newSize)];

Все отлично работает до определенной высоты.Когда строка HTML становится действительно длинной - например, 60 000 пикселей - я получаю сбой.Есть идеи, как мне избежать крушения?Я пытался найти примеры, когда UIWebView выложен плиткой, но не смог найти ничего полезного.

1 Ответ

2 голосов
/ 19 октября 2011

У вас почти наверняка заканчивается память. Экспериментально я определил, что UIWebView выделяет память в зависимости от размера кадра. Вы можете иметь, казалось бы, бесконечный contentSize, и iOS будет обрабатывать память для вас, когда контент прокручивается в видимую рамку и из нее.

Мне пришлось отказаться от дизайна, который выложен плиткой UIWebViews внутри UIScrollView. Кстати, это поведение изменилось где-то вокруг iOS 4.2. Раньше можно было разбивать UIWebViews на очень большие размеры кадров, а память была ограничена размером кадра содержащего UIScrollView.

...