获取 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 加载内容的高度的主要内容,如果未能解决你的问题,请参考以下文章