获取UIWebView加载内容的高度

时间:2013-10-10 13:30:32

标签: ios cocoa-touch uiwebview uiscrollview ios7

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

为了实现这一点,我需要获取我加载的网页内容的高度,然后设置网页视图的高度以匹配。如果我可以这样做,那么我打算设置UIScrollView的contentSize以匹配按钮和Web视图的高度。

我理解这应该发生在- (void)webViewDidStartLoad:(UIWebView *)webView方法中,这在stackoverflow上的许多线程上得到了证实(例如this one)。我也知道Apple说你不应该在UIS​​crollView中放置UiWebView,因为滚动动作可能会干扰。禁用Web视图的滚动应避免此问题。

有许多线索在讨论这个问题,但它们似乎都不适合我。可以因为我在iOS7上运行吗?



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

2 个答案:

答案 0 :(得分:3)

您可以使用以下代码获得身高:

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;
}

答案 1 :(得分:0)

您可以按如下方式获取加载到UIWebView的内容的高度:

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

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