UIWebView 内容高度不正确

Posted

技术标签:

【中文标题】UIWebView 内容高度不正确【英文标题】:UIWebView incorrect content height 【发布时间】:2014-05-29 21:24:48 【问题描述】:

我正在尝试调整UIWebView 的大小,使其适合加载页面的全部内容。为此,我获取了 webview 的滚动视图的内容高度,并将 webview 的高度设置为该值。

对于内容高度超过 200 的任何内容,这都可以正常工作,并且视图可以缩放以完全适合页面而无需任何额外空间。但是高度低于 200 的内容,webview 似乎达到了某种高度,webView.scrollView.contentSize.height 不会返回任何低于 200 的值。我留下了大量的空白。

关于这个主题有很多帖子,但似乎没有一个涉及这个特定问题。当该值低于 200 时,返回实际内容高度的最佳方法是什么?

编辑:这是一个 html 示例,它应该呈现很短,但最终是 200pt 高。

<meta name='viewport' content='width=device-width, user-scalable=yes'>
<html>
<head></head>
<body style='font-family:Helvetica neue; font-size:1.0em; color:#181818; -webkit-font-smoothing: antialiased;'><div>
Here's some example content.
<br/></div>
</body>

【问题讨论】:

也许你有一个像body min-height: 200px 这样的CSS规则? @Michael,请参阅上面的编辑 什么时候获取webView.scrollView.contentSize.height?在您的-webViewDidFinishLoad: 委托方法中还是在更早的时间点? (why I'm asking...) @Michael 我在内容加载完成后获取高度。 好的,那我不知道... 【参考方案1】:

请确保您的HTMLBODY 标签具有min-heightheight css 样式。 然后,您应该使用 javascript 获取高度。获取 实际 高度,而不是 scrollable 大小,这是某种未知的 UIWebView 决定。

所以[[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.offsetHeight"] floatValue] 可以。

【讨论】:

【参考方案2】:

我遇到了类似的问题,我使用 javascript 调用来获取内容高度并将 Web 视图的高度设置为该值,但 568 似乎是这些方法返回给我的最小值。我最终不得不先将我的 web 视图的高度设置为 1,然后将高度设置为 javascript 调用的结果。

【讨论】:

以上是关于UIWebView 内容高度不正确的主要内容,如果未能解决你的问题,请参考以下文章

如何获得具有相同屏幕宽度的 Web 视图?

UIWebview 调整高度以适应内容

Javascript返回不适合UIWebView给定宽度和高度的内容/字符串

UIWebView 的全部内容嵌入到 UITableView

在 xib 上更改小部件的类? (将 UIWebView 更改为我自己的 UIWebView 类别)

iOS:在 didFinishLoad 之后调整 UIWebView 的大小(内容应该适合而不滚动)