[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)容視圖的高度,可以做到非常精確。不信可測!