webView 加載HTML,動態(tài)獲取高度和圖片自適應

[self.wv loadHTMLString:@“HTMLStr” baseURL:nil];

使用上面的API進行HTML頁面加載之后,實現(xiàn)webView的代理,在webViewDidFinishLoad中調(diào)用JS方法。

for (int i = 0; i < 需要遍歷的圖片張數(shù); i++) {

NSString *str = [NSString stringWithFormat:@"document.getElementsByTagName('img')[%d].style.maxWidth = '100%%'",i];

[webView stringByEvaluatingJavaScriptFromString:str];

NSString *str1 = [NSString stringWithFormat:@"document.getElementsByTagName('img')[%d].style.height= 'auto'",i];

[webView stringByEvaluatingJavaScriptFromString:str1];

}

通過上面的代碼可以實現(xiàn)圖片的寬高等比縮放并且適應屏幕大小。在一般的需求中,都會動態(tài)的調(diào)整webView的高度來實現(xiàn)UI顯示。

CGFloat webViewHeight= [[webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('div')[0].offsetHeight"] floatValue];

這里獲取到的高度就是網(wǎng)頁顯示的高度,當然也許細心的朋友已經(jīng)發(fā)現(xiàn)了,我是通過div去獲取的高度,但是可能在你們實際情況中后臺返回的HTML沒有DIV,這里我提供一個解決辦法就是在HTMLStr的前后手動拼接<div>和</div>。也許你們會覺得麻煩,但是呢通過div來獲取高度我也是經(jīng)過測試之后才決定使用的。

如果在我們的HTMLStr中沒有div,那么我們獲取到的是整個body的高度,那么在我們的HTMLStr顯示的內(nèi)容高度很小的時候,并不會獲取到準確的高度,webView會返回一個境界值x,當實際高度小于x時就只會返回x這就造成了很大的麻煩,但是使用div返回的一定是div的內(nèi)容視圖的高度,可以做到非常精確。不信可測!

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容