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】:
请确保您的HTML
和BODY
标签不具有min-height
或height
css 样式。
然后,您应该使用 javascript 获取高度。获取 实际 高度,而不是 scrollable 大小,这是某种未知的 UIWebView 决定。
所以[[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.offsetHeight"] floatValue]
可以。
【讨论】:
【参考方案2】:我遇到了类似的问题,我使用 javascript 调用来获取内容高度并将 Web 视图的高度设置为该值,但 568 似乎是这些方法返回给我的最小值。我最终不得不先将我的 web 视图的高度设置为 1,然后将高度设置为 javascript 调用的结果。
【讨论】:
以上是关于UIWebView 内容高度不正确的主要内容,如果未能解决你的问题,请参考以下文章
Javascript返回不适合UIWebView给定宽度和高度的内容/字符串
UIWebView 的全部内容嵌入到 UITableView