使用twitterembeddedtweet来计算UITableViewCell中的UIWebview高度

我正在加载一个HTML的web视图,可以包含embedded链接到Twitter,VIMEO,YOUTUBE,或只是简单的HTML。

只是为了testing目的,我创build了一个简单的视图使用相同的方式,我正在计算的高度,我有一个表视图是高度计算,以正确显示web视图的依赖。

问题是计算高度是错误的,所以embeddedhtml不能正确显示。

这是我的代码相关的prats:

– >这将加载虚拟webview中的htmlstring,它唯一的目的是计算正确的高度,哑视图用于触发负载的HTML:

- (void) loadHtml:(NSIndexPath *) indexPath andString:(NSString *) htmlString { CGFloat webViewFrame = 216 * [[UIScreen mainScreen] bounds].size.width / 320; wvVtemp = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, webViewFrame, 5)]; wvVtemp.delegate = self; [wvVtemp loadHTMLString:htmlString baseURL:nil]; [dummyView addSubview:wvVtemp]; [dummyView bringSubviewToFront:wvVtemp]; } 

– > WebView的委托,就是webview没有加载它会调用高度来计算的方法:

  #pragma mark - uiwebview delegate - (void)webViewDidStartLoad:(UIWebView *)webView { } - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { if (!webView.isLoading) { [self getHeightForWebViewT:webView]; } } - (void)webViewDidFinishLoad:(UIWebView *)webView;{ if (!webView.isLoading) { [self getHeightForWebViewT:webView]; } } - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { return true; } 

– >计算webview的高度:

  - (void) getHeightForWebViewT:(UIWebView *) webView { [webView sizeToFit]; NSString *output = [webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"]; calculatedHeight = [output floatValue]; NSLog(@"Calculated indexPath wvTemp: -> height: %@", output); //[self.tView reloadRowsAtIndexPaths:@[webView.indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; [self.tView reloadData]; } 

– >我要渲染的HTML:

  <html><body>Begin <blockquote class="twitter-tweet" lang="en"> <p dir="ltr" lang="en">Apple seeds OS X El Capitan beta 7 to developers <a href="http://t.co/DBhpDdyXKU">http://t.co/DBhpDdyXKU</a> <a href="http://t.co/sWkTcOVMvt">pic. twitter.com/sWkTcOVMvt</a></p> &mdash; iDownloadBlog (@iDownloadBlog) <a href="https://twitter.com/iDownloadBlog/status/634096776107048961">August 19, 2015</a></blockquote> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script><br /> End</body></html> 

目前这个解决scheme不能使用twitterembedded代码,最终的布局是这样的(它缺lessHTML中的“End”)

屏幕拍摄

另一个问题是,不久以前,这个工作是正确的,在过去的几个星期里,它只是不时地开始工作,现在输出总是一样的。

我已经尝试了所有的解决scheme,我发现在谷歌和我能记得,但目前我卡在这…任何帮助/提示将非常感激。

你可以直接得到它,而不使用Javascript

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

如果您想使用Javascript,请尝试用document.body.offsetHeightreplacedocument.body.scrollHeight