iOS的WebView自適應內容高度問題 (完美處理由于圖片造成高度錯誤)

NSString * clientheight_str = [webView stringByEvaluatingJavaScriptFromString: @"document.body.offsetHeight"];之所以造成高度不準確是因為蘋果的retina屏幕一個像素是2*2點;比如說圖片200*200個像素,則會變成在蘋果這里400*400個點(200*200個像素需要400*400個點)



/////////////////////////////初始化,self.view是父控件/////////////////////////////////

_webView = [[UIWebView alloc] initWithFrame: CGRectMake(0,0, self.view.frame.size.width,0)];

_webView.delegate= self;

_webView.scrollView.bounces = NO;

_webView.scrollView.showsHorizontalScrollIndicator = NO;

_webView.scrollView.scrollEnabled = NO;

[_webView sizeToFit];

///////////////////////////////設置內容,這里包裝一層div,用來獲取內容實際高度(像素),htmlcontent是html格式的字符串//////////////

NSString * htmlcontent = [NSString stringWithFormat:@"

%@

", htmlcontent];

[_webView loadHTMLString:htmlcontent baseURL:nil];

////////////////////////////////delegate的方法重載////////////////////////////////////////////

- (void)webViewDidFinishLoad:(UIWebView *)webView

{

//獲取頁面高度(像素)

NSString * clientheight_str = [webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"];

floatclientheight = [clientheight_str floatValue];

//設置到WebView上

webView.frame = CGRectMake(0,0, self.view.frame.size.width, clientheight);

//獲取WebView最佳尺寸(點)

CGSize frame = [webView sizeThatFits:webView.frame.size];

//獲取內容實際高度(像素)

NSString * height_str= [webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('webview_content_wrapper').offsetHeight

+

parseInt(window.getComputedStyle(document.getElementsByTagName('body')[0]).getPropertyValue('margin-top'))

+

parseInt(window.getComputedStyle(document.getElementsByTagName('body')[0]).getPropertyValue('margin-bottom'))"];

floatheight = [height_str floatValue];

//內容實際高度(像素)* 點和像素的比

height = height * frame.height / clientheight;

//再次設置WebView高度(點)

webView.frame = CGRectMake(0,0, self.view.frame.size.width, height);

}

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

推薦閱讀更多精彩內容