Хотя теоретически метод JavaScript предоставлен
- (void)webViewDidFinishLoad:(UIWebView *)webview
CGRect oldBounds = [[self webview] bounds];
CGFloat height = [[webview stringByEvaluatingJavaScriptFromString:@"document.height"] floatValue];
[webview setBounds:CGRectMake(oldBounds.x, oldBounds.y, oldBounds.width, height)];
}
должно работать (и, похоже, работает для большинства людей), это просто не для меня. Я пробовал с несколькими вариантами, и он всегда возвращал размер, который не имеет ничего общего с истинной высотой содержимого. Например, один лайнер будет иметь высоту 260 или 244. Не знаю почему (хотел бы знать).
ТАК, что я закончил, как намекнул этот ответ:
- (void)webViewDidFinishLoad:(UIWebView *)aWebView {
CGRect frame = aWebView.frame;
frame.size.height = 1;
aWebView.frame = frame;
CGSize fittingSize = [aWebView sizeThatFits:CGSizeZero];
frame.size = fittingSize;
aWebView.frame = frame;
NSLog(@"size: %f, %f", fittingSize.width, fittingSize.height);
}
Я думаю, что JS более элегантный, но, черт возьми, он не работает для меня и не может понять, почему, хотя этот метод работал "из коробки".