extension BusShopMallDetailsViewController{
func loadWebData() {
wkWebView.isUserInteractionEnabled = false
wkWebView.scrollView.addObserver(self, forKeyPath: "contentSize", options: .new,context:nil)
guard (productDetailsStr ?? "") != "" else {
return
}
let str = "<html> \n"
+ "<head> \n"
+ "<style type=\"text/css\"> \n"
+ "body {font-size:15px;}\n"
+ "</style> \n"
+ "</head> \n"
+ "<body>"
+ "<script type='text/javascript'>"
+ "window.onload = function(){\n"
+ "var $img = document.getElementsByTagName('img');\n"
+ "for(var p in $img){\n"
+ " $img[p].style.width = '100%';\n"
+ "$img[p].style.height ='auto'\n"
+ "}\n"
+ "}"
+ "</script><div style=\"font-size:36px\">\(productDetailsStr)</div>"
+ "</body>"
+ "</html>"
wkWebView.loadHTMLString(str, baseURL: nil)
wkWebView.sizeToFit()
}
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == "contentSize" {
if self.wkWebView.estimatedProgress == 1.0 && self.wkWebView.isLoading == false {//判断WebView加载完成
wkWebView.evaluateJavaScript("document.readyState") { [weak self] (readyState, readyStateError) in
guard let self = self else {return}
if let readyState = readyState as? String {
if readyState == "complete"{//加载完成了
self.wkWebView.evaluateJavaScript("document.body.scrollWidth",completionHandler: { [weak self](data, error ) in
guard let self = self else {return}
if let data = data as? CGFloat, data > 0 {
//计算缩放比
let ratio = self.wkWebView.frame.width / data
//offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度
self.wkWebView.evaluateJavaScript("document.body.offsetHeight",completionHandler: { [weak self](data, error ) in
guard let self = self else {return}
var height:CGFloat = data as? CGFloat ?? 0.0
height = height * ratio
print("#####高度:%@",height)
if self.webH != height {
self.webH = height
self.tableView.reloadRows(at: [IndexPath(row: 1, section: 0)], with: .none)
}
})
}
})
}
}
}
}
}
}
}
wkWebView 精准计算内部高度
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 缘起 我们通常都会在webViwe控件的下面绘制很多其他的内容,不但webView中的内容需要全部展现,并且web...
- 需要注意:webview加载中虽然isLoading = false链接加载完成,但是页面中的图片、视频等资源可能...
- 本来是想用js方法的 但是 document.body.height怎么都拿不到数据 都是0 还有其他的body....
- 当我们涉及到webView和自定义控件结合的时候,例如一个资讯详情,上半部分是webView,下面位置想加上我们的...