Web和本地页面同存在一个页面时的计算高度问题
2016-08-22 16:16
351 查看
问题::页面上面是一个后台传入的HTML代码要用webView加载,然后紧接着下面是一个横向滑动的collectionView。
关键的点::上面的webView要根据加载的HTML代码计算出高度,然后重新改变页面的布局,
我的做法::
1刚开始的布局:页面是一个上放上一个scrollView,(因为webView高度很可能太大一个屏幕显示不下这样底下的collectionView就看不到了,所以页面大小要能改变),然后上面放上一个webView下面放上collectionView。
2获取HTML代码进行处理计算webView高度:这个部分大家上网找都会找到一个方法获取(在webView加载完成代理里面执行)
CGFloat scrollHeight = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"] floatValue];
这个是调用HTML的方法得到HTML页面的高度,但是这个高度很可能是不准确的Ps:大多时候不准确,分析了很久发现不准确是因为,HTML页面的宽度是不对应的屏幕宽度的,所以我们要将返回的HTML代码进行处理使其适应屏幕的宽度这样得到的高度就是准确的了,具体做法如下
NSString * headStr = [NSString stringWithFormat:@"<div style=\"width:%f;height:auto;\">",[UIScreen mainScreen].bounds.size.width-10];
NSString * lineStr = @"</div>";
NSString * htmlStr = [NSString stringWithFormat:@"%@%@%@",headStr,_brandModel.brand.content,lineStr];
具体意思是自己拼接一段HTML代码把整个页面变成一个div(盒子)然后设定div的宽度是你屏幕的宽度,高度自适应这样我们得到的HTML高度就是准确的了,
3.更新页面的布局:
CGFloat scrollHeight = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"] floatValue];//得到webView高度
CGRect oldHeaderWenHeight = self.headWebView.frame;
oldHeaderWenHeight.size.height = scrollHeight;
self.headWebView.frame = oldHeaderWenHeight;//刷新webView高度
self.bgscrollView.contentSize = CGSizeMake(DEF_SCREEN_WIDTH, scrollHeight+itemHeight);//刷新scrollView高度
CGRect oldCollectionView = self.collectionView.frame;
oldCollectionView.origin.y = webViewHeight;
self.collectionView.frame = oldCollectionView;//刷新CollectionView高度
文/iOS_windKing(简书作者)
原文链接:http://www.jianshu.com/p/a9f2450f4e7d
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
关键的点::上面的webView要根据加载的HTML代码计算出高度,然后重新改变页面的布局,
我的做法::
1刚开始的布局:页面是一个上放上一个scrollView,(因为webView高度很可能太大一个屏幕显示不下这样底下的collectionView就看不到了,所以页面大小要能改变),然后上面放上一个webView下面放上collectionView。
2获取HTML代码进行处理计算webView高度:这个部分大家上网找都会找到一个方法获取(在webView加载完成代理里面执行)
CGFloat scrollHeight = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"] floatValue];
这个是调用HTML的方法得到HTML页面的高度,但是这个高度很可能是不准确的Ps:大多时候不准确,分析了很久发现不准确是因为,HTML页面的宽度是不对应的屏幕宽度的,所以我们要将返回的HTML代码进行处理使其适应屏幕的宽度这样得到的高度就是准确的了,具体做法如下
NSString * headStr = [NSString stringWithFormat:@"<div style=\"width:%f;height:auto;\">",[UIScreen mainScreen].bounds.size.width-10];
NSString * lineStr = @"</div>";
NSString * htmlStr = [NSString stringWithFormat:@"%@%@%@",headStr,_brandModel.brand.content,lineStr];
具体意思是自己拼接一段HTML代码把整个页面变成一个div(盒子)然后设定div的宽度是你屏幕的宽度,高度自适应这样我们得到的HTML高度就是准确的了,
3.更新页面的布局:
CGFloat scrollHeight = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"] floatValue];//得到webView高度
CGRect oldHeaderWenHeight = self.headWebView.frame;
oldHeaderWenHeight.size.height = scrollHeight;
self.headWebView.frame = oldHeaderWenHeight;//刷新webView高度
self.bgscrollView.contentSize = CGSizeMake(DEF_SCREEN_WIDTH, scrollHeight+itemHeight);//刷新scrollView高度
CGRect oldCollectionView = self.collectionView.frame;
oldCollectionView.origin.y = webViewHeight;
self.collectionView.frame = oldCollectionView;//刷新CollectionView高度
文/iOS_windKing(简书作者)
原文链接:http://www.jianshu.com/p/a9f2450f4e7d
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
相关文章推荐
- 一个Web页面的问题分析
- 一个Web页面的问题分析
- iOS计算UIWebView的高度和iOS8之后的WKWebView的高度问题
- iOS webView以及WKWebView计算高度慢,加快加载速度等问题
- 在Web应用中,会用到大量的Ajax请求,在Ajax请求中存在的一个问题就是如何判断session超时,在网上找到的一个java中处理此问题方法:
- 一个Web页面的问题分析
- 关于运行本地web页面浏览器出现安全拦截提示问题
- iOS计算UIWebView的高度和iOS8之后的WKWebView的高度问题
- iOS web view 加载本地HTML页面不显示问题
- web页面记住密码存在安全问题 - 处理方式
- 一个Web页面的问题分析
- Sping.net1.3.2 srping.web.mvc3 用于mvc3 一个cshtml页面不能用多个controller的问题
- 一个Web页面的问题分析 转载的不错,可以学习一下
- 一个Web页面的问题分析
- Web开发_问题解决(2)之获取上一个页面的a标签的参数值
- UIWebView自适应高度,适合一个页面多个WebView
- ionic3 ion-navbar height 导航 push 到一个新页面后,手机的状态栏高度没有了问题
- Android WebView载入本地页面时的乱码问题
- android webView 每次开启一个新的页面(重定向问题)
- 使用WKWebView的一个问题:iOS中使用本地html的一个大坑