完美方案——iOS的WebView自适应内容高度

摘要:
_webView.delete=self;%@&书信电报;nil];floatclientheight=[clientheight_strfloatValue];floatheight=[height_strfloatValue];高度);
    /////////////////////////////初始化,self.view是父控件/////////////////////////////////
    _webView = [[UIWebView alloc] initWithFrame: CGRectMake(0, 0, self.view.frame.size.width, 0)];
    _webView.delegate = self;
    _webView.scrollView.bounces = NO;
    _webView.scrollView.showsHorizontalScrollIndicator = NO;
    _webView.scrollView.scrollEnabled = NO;
    [_webView sizeToFit];
/////////////////////////////
//设置内容,这里包装一层div,用来获取内容实际高度(像素),htmlcontent是html格式的字符串////////////// NSString * htmlcontent = [NSString stringWithFormat:@"<div id="webview_content_wrapper">%@</div>", htmlcontent]; [_webView loadHTMLString:htmlcontent baseURL:nil];
////////////////////////////////delegate的方法重载//////////////////////////////////////////// - (void)webViewDidFinishLoad:(UIWebView *)webView { //获取页面高度(像素) NSString * clientheight_str = [webView stringByEvaluatingJavaScriptFromString: @"document.body.clientHeight"]; float clientheight = [clientheight_str floatValue]; //设置到WebView上 webView.frame = CGRectMake(0, 0, self.view.frame.size.width, clientheight); //获取WebView最佳尺寸(点) CGSize frame = [webView sizeThatFits:webView.frame.size]; //获取内容实际高度(像素) NSString * height_str= [webView stringByEvaluatingJavaScriptFromString: @"document.getElementById('webview_content_wrapper').clientHeight + parseInt(window.getComputedStyle(document.getElementsByTagName('body')[0]).getPropertyValue('margin-top')) + parseInt(window.getComputedStyle(document.getElementsByTagName('body')[0]).getPropertyValue('margin-bottom'))"]; float height = [height_str floatValue]; //内容实际高度(像素)* 点和像素的比 height = height * frame.height / clientheight; //再次设置WebView高度(点) webView.frame = CGRectMake(0, 0, self.view.frame.size.width, height); }

免责声明:文章转载自《完美方案——iOS的WebView自适应内容高度》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android TimePickerDialog样式配置与TimePicker模式选择Spring Cloud Finchley.SR1 版本的坑:placeholer占位符无法解析!下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

webpack4系列之 【2. 踩坑--webpack 2.x升级至4.x】

一.安装webpack-cli,webpack@4.26.1 1.npm install webpack-cli -D 2.npm install webpack@4.26.1 -D 二.踩坑 执行npm run dev报错 1./Users/lily/ForWork/forBMSys/bm-fe/node_modules/html-webpack-plu...

mongodb 配置均衡器的运行窗口

考虑到数据迁移会降低系统性能,可以配置均衡器在只在特定时间段运行,比如夜里系统负载比较小的时候。详细的配置步骤如下; 连接到任意的mongos服务器,并通过安全认证(如果有认证的话)。 切换到config数据库: use config 启动均衡器: sh.setBalancerState( true ) 配置时间窗口: db.settings.upd...

分享一个递归无限级拼接Json的方法---ExtJs的TreePanel和TreeGrid均适用(Ef,Lambda,Linq,IQueryable,List)

话不多说,先上实体类,如果你不是codefirst,就把它当成数据表结构。 下面是底层BaseDal获取数据的方法  (如果你没有Base类,直接写在你的DAL层和BLL层) 下面是BaseService的方法 下面方法用于拼接字符串 主体方法-- /// <summary> /// 得到****TreeGrid****...

阿里消息队列中间件 RocketMQ源码解析:Message发送&amp;amp;接收

关注微信公众号:【芋艿的后端小屋】有福利: RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表 RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址 您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。 新的源码解析文章实时收到通知。每周更新...

LinQ 入门系列 [OfType,ToArray,ToList,ToDictionary]

先说点理论1.OfType :     即接受基于IEnumerable<T> 接口的信息源,也接受那些在 .NET Framework 1.0 中出现的非参数化的 IEnumerable 接口(non-parameterized IEnumerable interface)。OfType 操作符允许用户在标准的 .NET collection...

Android中的常见时区

方法: private void printTimeZone(){ String[] ids= TimeZone.getAvailableIDs(); for (int i = 0; i < ids.length; i++) { Log.d(TAG,"时区"+i+"-->>"+ids[i]); } D: 时...