gpt4 book ai didi

objective-c - 如何呈现 html 以便高度恰好适合它?

转载 作者:行者123 更新时间:2023-11-28 22:45:36 24 4
gpt4 key购买 nike

我正在尝试制作一个 tumblr 应用程序。当我对任何帖子发出获取请求时,他们会返回正文的 html。目前我正在获取 html 并将其推送到 uiwebview 中。我设置了 View 的宽度,因为它总是相同的,但我不知道如何计算它的高度。我想把它放到一个 uitable 中,所以我需要计算出每个单元格的高度。

那么基本上在渲染 html 之后是否可以获得 uiwebview 的高度?

最佳答案

我使用了一个 javascript 技巧来做到这一点。

在将 HTML String 加载到 UIWebView 之前,您需要将以下 javascript 添加到 HTML String 中。

NSMutableString *javaScript = [[NSMutableString alloc] init];
[javaScript appendString:@"<script type=\"text/javascript\">"];
[javaScript appendString:@" window.onload = function() {"];
[javaScript appendString:@" window.location.href = \"ready://\" + document.body.offsetHeight;"];
[javaScript appendString:@" }"];
[javaScript appendString:@"</script>"];

当 UIWebView 完成渲染并知道显示整个内容所需的 UIWebView 高度时,将触发此 javascript,而无需上下滚动。高度由 javascript 变量 document.body.offsetHeight 给出

javascript 将导航 UIWebView 到一个 url scheme ready://

document.body.offsetHeight 的值存储为“host”

您必须使用 UIWebView 委托(delegate)拦截此请求,以便 UIWebView 不会导航到 ready://

- (BOOL)webView:(UIWebView*)webView
shouldStartLoadWithRequest:(NSURLRequest*)request
navigationType:(UIWebViewNavigationType)navigationType {

NSURL *url = [request URL];
if (navigationType == UIWebViewNavigationTypeOther) {
if ([[url scheme] isEqualToString:@"ready"]) {

float contentHeight = [[url host] floatValue];
NSLog(@"web height:%f",contentHeight);

//You can use the contentHeight to resize the UIWebView frame



return NO; //Prevent the UIWebView to navigate to this ready:// scheme
}
}
return YES;
}

“就绪”方案只是一个任意名称。基本上,JavaScript 要求 UIWebView 导航到 ready://234

“就绪”是自定义 URL 方案

“234”是 UIWebView 在不滚动的情况下呈现 HTML 内容所需高度的示例。

关于objective-c - 如何呈现 html 以便高度恰好适合它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13303765/

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