gpt4 book ai didi

html - 使用推特嵌入推文计算 UITableViewCell 中的 UIWebview 高度

转载 作者:行者123 更新时间:2023-11-28 03:07:06 26 4
gpt4 key购买 nike

我正在将 html 加载到 webview,它可以包含指向 twitter、vimeo、youtube 的嵌入链接,或者只是简单的 html。

仅出于测试目的,我使用与计算高度相同的方式创建了一个简单 View ,并且我有一个表格 View ,它依赖于计算的高度以正确显示 WebView 。

问题是计算出的高度有误,所以嵌入的html没有正确显示。

这是我的代码的相关部分:

-> 这会在虚拟 webview 中加载 html 字符串,唯一目的是计算正确的高度,虚拟 View 用于触发 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 委托(delegate),如果 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>

目前这个解决方案不仅仅适用于 Twitter 嵌入代码,最终的布局是这样的(它缺少 html 中的“结束”)

screen shoot

另一个问题是,不久前它还可以正常工作,最近几周它开始只是时不时地工作,而现在输出总是一样的。

我已经尝试了我在谷歌中找到的所有解决方案以及我记得的,但目前我被困在这个...任何帮助/提示将不胜感激。

最佳答案

你可以直接获取它,无需使用 Javascript

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

如果您想使用 Javascript,请尝试将 document.body.scrollHeight 替换为 document.body.offsetHeight

关于html - 使用推特嵌入推文计算 UITableViewCell 中的 UIWebview 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32144833/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com