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:獲取對象相對于版面或由父坐標(biāo) offsetParent 屬性指定的父坐標(biāo)的高度
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 精準(zhǔn)計算內(nèi)部高度
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 緣起 我們通常都會在webViwe控件的下面繪制很多其他的內(nèi)容,不但webView中的內(nèi)容需要全部展現(xiàn),并且web...
- 需要注意:webview加載中雖然isLoading = false鏈接加載完成,但是頁面中的圖片、視頻等資源可能...
- 本來是想用js方法的 但是 document.body.height怎么都拿不到數(shù)據(jù) 都是0 還有其他的body....
- 當(dāng)我們涉及到webView和自定義控件結(jié)合的時候,例如一個資訊詳情,上半部分是webView,下面位置想加上我們的...