UIWebView的显示内容的高度

转载 2016年08月31日 09:38:10


转载自李龙简书 http://www.jianshu.com/p/80381ccaab44

需求

最近,公司同事遇到了这样的一个需求:需要对加载到UIWebView上的H5页面实现折叠,延伸一下,我们依据webView内容的那一部分的高度来设置webView的height(通常,我们是设置一个从navigationbar.buttom开始到 screenView.height的webView,占据整个屏幕,然后直接加载URL链接,通过三种方式和H5进行交互可以了).

具体场景: 比如我们webView是放到一个scrollView上的显示,这个scrollView上还有其他的内容.如果我们webView只有一行文字,那么你显然只显示这一行文字的高度就可以了.你多显示或者少显示都会影响界面的美观.说了这么多,其实都不如下边一张图来的直观,上图~~~


黑色底线是webView的截止

最开始的思路

这个思路显示非常麻烦.没有尝试,但是我感觉也是可行的.因为下一小结介绍一个非常简便的方法来计算webView的显示内容的高度.

具体思路看截图:



关键代码

上边的方法和这里提到的方法比起来显然劳民伤财. 话不多说,代码很简单,你肯定能看懂


重点是下边标注的这两句代码


源码可复制

-(void)viewDidLoad {
    [super viewDidLoad];
    _webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 1000)];
    _webView.delegate = self;
    [self.view addSubview: _webView];
    _webView.scalesPageToFit = YES;

    NSURLRequest *request =[NSURLRequest requestWithURL:[NSURL URLWithString:@"file:///Users/ksang/Desktop/html5%E4%B8%87%E4%BF%A1%E5%81%A5%E5%BA%B7-%E6%96%87%E7%AB%A0%E5%86%85%E5%AE%B9%E9%A1%B5/m-newsContent.html"]];
    [_webView loadRequest:request];
}


-(void)webViewDidFinishLoad:(UIWebView *)webView{
    CGFloat sizeHeight = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight;"] floatValue];
    NSLog(@"contentWebView sizeHeight====%f",sizeHeight * 0.5);
    webView.frame = CGRectMake(0, 0, self.view.frame.size.width, sizeHeight * 0.5);  
}

验证

为了验证上边这段代码,我有更改了一下H5代码,成了这样,你看也是好的:


黑色底线是webView的截止


文/春田花花幼儿园_沐然(简书作者)
原文链接:http://www.jianshu.com/p/80381ccaab44
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

精确计算UIWebView内容的高度

搜集了网上各大博客以及技术论坛,能够获取UIWebView的内容高度有以下两个方法,相关代码如下: 方法一:-(void)webViewDidFinishLoad:(UIWebView *)webV...
  • huangyong1314
  • huangyong1314
  • 2016年03月21日 10:03
  • 2597

获取UIWebView的内容高度(精准) - 遇到的坑

获取UIWebView的内容高度(精准) - 遇到的坑表头:OC布局头像,昵称,下划线,标题,UIWebView加载正文内容,webView下面OC布局的时间,查看数,和评论数 评论:是UITabl...
  • EmulateStep
  • EmulateStep
  • 2017年05月26日 14:48
  • 538

获取UIWebview的高度4种方法

UIWebView 是IOS开发常用的类。它简单好用,使用它,开发者不用写太多的代码。但是,App开发中,获取webview的高度成为开发者必备的知识。我知道网上也有好多方法。我这里是做一个评价,不是...
  • zhoushuangjian511
  • zhoushuangjian511
  • 2016年10月08日 15:08
  • 1231

iOS动态获取UIWebView高度

场景 在 App 中加载网页时,通常情况我们只需要直接初始化一个 WebView,然后去加载对应的 URL 即可,但若是有时候有些个设计是需要将 web 与原生的 UI 搭载在一起,一般情况下,...
  • wjwc2014
  • wjwc2014
  • 2016年07月01日 00:06
  • 226

ios webview自适应实际内容高度4种方法

第一种方法 - (void)webViewDidFinishLoad:(UIWebView *)webView{ CGFloat webViewHeight=[webView.scrollView c...
  • shaobo8910
  • shaobo8910
  • 2016年11月01日 12:52
  • 6132

iOS UIWebView加载数据和高度自适应

Url编码、解码         当url地址中包含有中文字符或其他非标准的url字符时,需要对该url地址进行编码。NSString提供编码和解码方法:         编码:stringByA...
  • bitcser
  • bitcser
  • 2016年11月10日 18:05
  • 892

【iOS】swift-获取webView的高度

func webViewDidFinishLoad(webView: UIWebView) {         let webHeightStr = webView.stringByEvalu...
  • chelongfei
  • chelongfei
  • 2016年02月15日 08:56
  • 1159

iOS 获取UIWebView的高度

使用KVO监听 scrollView.contentSize 属性 在KVO回调的方法中处理 _webView.scrollView.contentSize.height 获取到目...
  • u014632353
  • u014632353
  • 2015年06月03日 14:00
  • 372

UIWebView如何获取内容高度

iOS UIWebView如何获取到内容的高度呢?我们经常会遇到项目中需要使用UIWebView来加载H5页面,但是页面的高度并不确定,而我们前端需要根据内容的高度呈现出来,且不允许webview滚动...
  • WANGYURUI_wyr
  • WANGYURUI_wyr
  • 2016年10月19日 16:28
  • 626

UIWebView的加载方式及获得动态高度的方法

UIWebView加载数据3种方法 1.- (void)loadRequest:(NSURLRequest *)request; NSURL *url = [NSURL URLWi...
  • yangliu16
  • yangliu16
  • 2016年09月27日 14:05
  • 1036
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UIWebView的显示内容的高度
举报原因:
原因补充:

(最多只允许输入30个字)