Swift3 使用webView只能展示一部分
2017-12-12 本文已影响0人
半曲恋江南
最进项目中遇到一个问题,我们项目的商品详情界面是上面一部分原生界面,下面一部分用的webView展示H5界面,当我实现功能后,发现每件商品第一次进来的时候,H5界面只加载出来了一半左右,还有一半是空白,一开始以为是加载的问题,但是打印之后,发现已经都加在出来了,重新进入这个界面,H5界面展示就是正常的了。
一开始,以为加载H5,网速太慢,没有全部加载出来?但是webViewDidFinishLoad方法里打印了webVIew的高度,打印高度正常的。。。
PS: 打印webView高度方法(在webViewDidFinishLoad方法里)
1. 根据webVIew的scrollerView的高度获取webView高度
let webHeight1 : CGFloat = webView.scrollView.contentSize.height
2. let height = webView.stringByEvaluatingJavaScript(from: "document.body.offsetHeight;")
3. let webHeightStr = webView.stringByEvaluatingJavaScript(from: "document.body.scrollHeight")
let webHeight = CGFloat((webHeightStr! as NSString).floatValue)
屏幕快照 2017-12-12 下午6.21.56.png
打印结果大同小异,基本相同,只有第二种稍微小一些,应该也可能更准确一些。
回归正传,既然加载出来了,还是加载不出来,是什么问题?
网上搜的,说是加上 webView.sizeToFit(),然并卵,较真的话可能显示的H5界面比原来大一点了,还是不符合需求...
最后才发现需要更新一下frame才行
在webViewDidFinishLoad 方法里面更新一下webView的frame
用获取到的webView高度加上你原生界面的高度更新一下UI 完美解决
屏幕快照 2017-12-12 下午6.43.31.png