Я загружаю контент в UIWebView с помощью следующего вызова:
NSString *detailHtmlString = [NSString stringWithFormat:@"<html><head><style>body {background: black;color: white;line-height: 1.4em; font-family: sans-serif; margin: 0; padding: 0 0 30px 0;width: 280px;} p {margin-top: 10px;}</style></head><body id=\"content\">%@</body></html>",[currentWeek objectForKey:@"post_content"]];
[weekDetailController.movie_detail loadHTMLString:detailHtmlString baseURL:nil];
Затем, после того, как он заканчивает загрузку:
- (void) webViewDidFinishLoad:(UIWebView *)sender {
[self performSelector:@selector(calculateWebViewSize) withObject:nil afterDelay:0.1];
}
- (void) calculateWebViewSize {
[weekDetailController.movie_detail sizeToFit];
float newHeight = [[weekDetailController.movie_detail stringByEvaluatingJavaScriptFromString :@"document.getElementById(\"content\").offsetHeight"] floatValue];
newHeight += 300; //height of the other elements
NSLog(@"Height: %f",newHeight);
CGRect frame = weekDetailController.movie_detail.frame;
NSLog(@"Height was: %f",frame.size.height);
frame.size.height = newHeight;
weekDetailController.movie_detail.frame = frame;
[scrollView.scrollView setContentOffset:CGPointZero];
[scrollView.scrollView setContentSize:CGSizeMake(frame.size.width, frame.size.height)];
}
Это прекрасно работает при первом просмотрезагружается, но в последующих представлениях, когда в UIWebView загружается другое содержимое (с использованием того же вызова, что и выше), вызов JavaScript для получения высоты возвращает все большее и большее значения - даже если содержимое меньше, оно по-прежнему возвращаетвысота наибольшего количества контента, который был в представлении в какой-то момент.Я попытался загрузить пустую строку HTML в представление, чтобы «очистить» ее, но это, похоже, тоже не помогает.
Любые подсказки приветствуются!