美文网首页iOS备忘录iOS技术交流收藏02-收集
iOS关于webView(一)—计算 webView 显示内容后

iOS关于webView(一)—计算 webView 显示内容后

作者: Kan__ | 来源:发表于2016-03-29 14:45 被阅读10486次

之前项目需求一个view上面是web下面是原生,如何算出web高度布局下面视图view.y
eg:上面是新闻下面是评论,评论要用原生实现。

两种方法,方法1可以得到内容的实际高度,方法2得到了将内容显示完整后的 webView 的尺寸(包含 UIEdgeInsets)

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
//方法1 实际使用js方法实现
CGFloat documentWidth = [[webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('content').offsetWidth"] floatValue];
CGFloat documentHeight = [[webView stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"content\").offsetHeight;"] floatValue];
NSLog(@"documentSize = {%f, %f}", documentWidth, documentHeight);

//方法2
CGRect frame = webView.frame;
frame.size.width = 768;
frame.size.height = 1;
//    webView.scrollView.scrollEnabled = NO;
webView.frame = frame;
frame.size.height = webView.scrollView.contentSize.height;
NSLog(@"frame = %@", [NSValue valueWithCGRect:frame]);
webView.frame = frame;
}

如果获取高度不准

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), queue, ^{
写上面介绍的方法
});

链接

计算 webView 显示内容后实际高度

改变UIWebView背景色

相关文章

网友评论

  • Alfred的记录本:您好,为什么我两种方式获取的高度都是零呢,是哪里用错了吗?:smiley:
    Alfred的记录本:包在dispatch_after中也是0
  • 爱勤海之旅:请问当文字变小的时候,webview的高度没有变,还是变化会最大值?怎么办?
  • 柒年_9bdd:很有用,解决了第二次高度计算不准确的问题,但是什么原理楼主能说下吗
  • 酷哥不回头看爆炸:你好我使用UIWebview 初次加载内容,获取content size高度为 1089, 再次用同一个web view 加载较少内容。 再次获取content size 的高度还是 1089(上次较多内容的高度),请问我怎么解决呢?
  • 迷矢考:非常感谢,昨天查简书、Google了一天,高度就是有问题,在次感谢作者!
  • iDog:博主 你是怎么刷新tableView的高度的呢
  • iDog:正好用到 谢谢博主
  • rulemaker:有个小问题想请教一下,如果可以的话请加我q。是这样的,我按照这个方法计算,确实计算出来了,webview也确实可以滑动,但是不能按照计算出来的长度滑动,,,,,只能滑动点点,就滑不了了,,,,,
  • 搬砖快乐:楼主 为什么我第一次计算的高度10427.00比第二次计算的高度6970.00 多好多 ?第一次长出来好大一块,第二次是正确的
    82295265a0fd:@Kan__ 为什么延迟0.1S就会出现内容高度正确,之前不延时就会可能显示高度错误呢?什么原理?能说下吗
    Mannyao:@Kan__ 在那个方法里面写那?
    Kan__:@海燕v 你需要在这个方法里写个延迟
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), queue, ^{
    在这里写过去高度方法

    });
  • qwemm:有的网页图片是异步加载的,在- (void)webViewDidFinishLoad:(UIWebView *)webView调用时,图片还未加载完毕,这样的能计算高度吗?
    田小北北:@Kan__ 滚一边拉子去,没试过别瞎说,你多弄几张图片试试
    Kan__:@赵皓皓 这个代理方法是当前web加载完毕才会调用的,所以这个代理被触发了肯定是加载完成了。
  • 天顾有情人_strive:楼主 为什么我打印的时候用url加载的高度是零呢
  • cl1993:Mark
  • 火星的蝈蝈:很好,谢谢博主
    Kan__:@火星的蝈蝈 对你有用就行 :smile:

本文标题:iOS关于webView(一)—计算 webView 显示内容后

本文链接:https://www.haomeiwen.com/subject/ojdslttx.html