有的时候会碰见类似的苦逼需求, webview自适应实际内容高度 下面有四种方法供使用

方法1:获取webview中scrovllview的contentsize进行设置

 
1
2
3
4
5
6
-(void)webViewDidFinishLoad:(UIWebView *)webView{
    CGFloat webViewHeight=[webView.scrollView contentSize].height;
    CGRect newFrame = webView.frame;
    newFrame.size.height = webViewHeight;
    webView.frame = newFrame;
}

方法2:执行js语句 直接获取html文档的dom高度

 
1
2
3
4
5
6
7
-(void)webViewDidFinishLoad:(UIWebView *)webView{
    CGFloat webViewHeight= [[webView stringByEvaluatingJavaScriptFromString: @"document.body.offsetHeight"]floatValue];
// CGFloat webViewHeight= [[webView stringByEvaluatingJavaScriptFromString: @"document.body.scrollHeight"]floatValue];
    CGRect newFrame = webView.frame;
    newFrame.size.height = webViewHeight;
    webView.frame = newFrame;
}

方法3.先将UIWebView的高度设为最小,然后再使用sizeThatFits就会返回刚好合适的大小

 
1
2
3
4
5
6
-(void)webViewDidFinishLoad:(UIWebView *)webView{
    CGSize actualSize = [webView sizeThatFits:CGSizeZero];
    CGRect newFrame = webView.frame;
    newFrame.size.height = actualSize.height;
    webView.frame = newFrame;
}

方法4.遍历webview子视图 获取UIWebDocumentView高度即实际高度

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-(void)webViewDidFinishLoad:(UIWebView *)webView{
    CGFloat webViewHeight = 0.0f;
    if ([webView.subviews count] > 0)
    {
        UIView *scrollerView = webView.subviews[0];
        if ([scrollerView.subviews count] > 0)
        {
            UIView *webDocView = scrollerView.subviews.lastObject;
            if ([webDocView isKindOfClass:[NSClassFromString(@"UIWebDocumentView") class]])
            {
                webViewHeight = webDocView.frame.size.height;//获取文档的高度
                webView.frame= webDocView.frame; //更新UIWebView 的高度
            }
        }
    }
}

最新文章

  1. css样式之border
  2. 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比、实现对比[转]
  3. linux RPM、YUM
  4. 两段for循环代码的区别
  5. 一面cvte
  6. 读取XML文件的节点内的内容
  7. django上传文件
  8. 一个比较常用的关于php下的mysql数据操作类
  9. USB Packet Types
  10. dedecms 忘记后台密码
  11. lintcode 中等题:N Queens N皇后问题
  12. btr_cur_t;
  13. 跟Android初学者分享几点经验
  14. C++类继承内存布局(一)
  15. codevs 2449 骑士精神 (IDDfs)
  16. PHP Libxml
  17. wpf 线程与界面线程
  18. Hierarchy Viewer工具使用
  19. Linux系统EXT文件系统
  20. 详解PHP反射API

热门文章

  1. php这是一个随机打印输出字符串的例子
  2. Android之debug---menu的getActionView()return null
  3. 韩顺平_linux_随堂笔记
  4. 弹幕文化与HTML5
  5. jquery动画,基础以及我发现的新大陆
  6. Sql Server函数全解(四)日期和时间函数
  7. 浅谈Hibernate入门
  8. jQuery-1.9.1源码分析系列(十) 事件系统——事件委托
  9. 实用的CSS3属性和使用技巧
  10. .Net中的并行编程-3.ConcurrentQueue实现与分析