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);
}