¿Cómo configurar la altura de UIWebView en function del contenido html?

Quiero establecer la altura de UIWebview basada en contenido HTML. Obtengo el tamaño de una cadena, pero no obtengo el tamaño real debido al párrafo, negrita, tamaño de fuente diferente, etc.

Usualmente utilizo estos methods para configurar el marco UIWebview ya que es el tamaño del contenido:

 - (void)webViewDidStartLoad:(UIWebView *)webView { CGRect frame = webView.frame; frame.size.height = 5.0f; webView.frame = frame; } - (void)webViewDidFinishLoad:(UIWebView *)webView { CGSize mWebViewTextSize = [webView sizeThatFits:CGSizeMake(1.0f, 1.0f)]; // Pass about any size CGRect mWebViewFrame = webView.frame; mWebViewFrame.size.height = mWebViewTextSize.height; webView.frame = mWebViewFrame; //Disable bouncing in webview for (id subview in webView.subviews) { if ([[subview class] isSubclassOfClass: [UIScrollView class]]) { [subview setBounces:NO]; } } } 

Se los webView automáticamente (si configura el delegado de WebView en esta class), cuando WebView haya terminado de cargar su contenido.

Bueno, cada vista web tiene una UIScrollView integrada en ella, por lo que intentaría esperar a que la página se cargue y luego toque la propiedad contentSize de la vista de desplazamiento para get el alto de la página.

 - (void)webViewDidFinishLoad:(UIWebView *)webView { CGFloat height = webView.scrollView.contentSize.height; } 

Prueba este codigo

 - (void)webViewDidFinishLoad:(UIWebView *)webView { height= [[self.webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"] floatValue]; } 
 - (void)viewDidLoad { [super viewDidLoad]; webview.delegate = self; [webview loadHTMLString:@"<div id='foo' style='background: networking'>The quick brown fox jumped over the lazy dog.</div>" baseURL:nil]; } - (void)webViewDidFinishLoad:(UIWebView *)webView { NSString *output = [webview stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"foo\").offsetHeight;"]; NSLog(@"height: %@", output); } 

consulte también Cómo determinar la altura de UIWebView en function del contenido, dentro de una altura variable UITableView?

Calcular la altura de UIWebView en function de su contenido.

Si tiene una vista web en tableviewcell, en heightForRowAtIndexPath establezca el alto de celda a alto del tamaño de NSAttributedString como sigue.

 -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ NSAttributedString *attributedText = [NSString getHTMLAttributedString:@"HTML Content"]; CGSize size = CGSizeMake(300, CGFLOAT_MAX); CGRect paragraphRect = [attributedText boundingRectWithSize:size options:(NSStringDrawingUsesLineFragmentOrigin) context:nil]; return paragraphRect.size.height; } +(NSAttributedString *) getHTMLAttributedString:(NSString *) string{ NSError *errorFees=nil; NSString *sourceFees = [NSString stringWithFormat: @"<span style=\"font-family: 'Roboto-Light';font-size: 14px\">%@</span>",string]; NSMutableAttributedString* strFees = [[NSMutableAttributedString alloc] initWithData:[sourceFees dataUsingEncoding:NSUTF8StringEncoding] options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: [NSNumber numberWithInt:NSUTF8StringEncoding]} documentAttributes:nil error:&errorFees]; return strFees; }