获取 UIWebView 加载内容的高度

Posted

技术标签:

【中文标题】获取 UIWebView 加载内容的高度【英文标题】:Get height of UIWebView loaded content 【发布时间】:2013-10-10 13:30:31 【问题描述】:

所以我所追求的是一种将UIButton 放在UIScrollView 顶部和UIWebView 下方的方法。我想要这样的原因是当用户滚动我加载到 UIWebView 中的页面时,我需要按钮“滚动”。

为了使其工作,我需要获取我加载的网页内容的高度,然后设置网络视图的高度以匹配此。如果我能做到这一点,我打算设置 UIScrollView 的 contentSize 以匹配按钮和 web 视图的高度。

我知道这应该以某种方式发生在- (void)webViewDidStartLoad:(UIWebView *)webView 方法中,这在*** 上的许多线程上得到了证实(例如this one)。我也知道 Apple 说您不应该将 UiWebView 放在 UIScrollView 中,因为滚动操作可能会干扰。不过,禁用 Web 视图的滚动应该可以避免这个问题。

有很多线程讨论这个问题,但似乎没有一个对我有用。会不会是因为我在 ios7 上运行?

我在这里非常绝望,非常感谢您的帮助!

【问题讨论】:

【参考方案1】:

您可以使用以下代码获取高度:

NSString *heightStrig = [webView stringByEvaluatingjavascriptFromString:@"(document.height !== undefined) ? document.height : document.body.offsetHeight;"];
float height = heightStrig.floatValue;

完整代码:

- (void)webViewDidFinishLoad:(UIWebView *)webView

    CGRect frame = webView.frame;
    NSString *heightStrig = [webView stringByEvaluatingJavaScriptFromString:@"(document.height !== undefined) ? document.height : document.body.offsetHeight;"];
    float height = heightStrig.floatValue + 10.0;
    frame.size.height = height;
    webView.frame = frame;

【讨论】:

【参考方案2】:

您可以获取加载到UIWebView 中的内容的高度,如下所示:

- (void)webViewDidFinishLoad:(UIWebView *)webView 
    CGFloat contentHeight = webView.scrollView.contentSize.height;

然后相应地调整网页视图的框架。

【讨论】:

我以前试过这个。但是您如何建议我更改 Web 视图框架?用这种方法?并且也在这个方法中改变 IOScrollView 框架? ... 似乎对我不起作用。

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

获取 UIWebView 内容的高度

UIWebView 内容高度不正确

如何将 UIWeb 视图控制器的内容分享到社交网站?

UITableViewCell嵌套UIWebView并且cell根据webView的内容自适应

UIWebView:获取 Webview 内容大小?

webview加载网页获取高度