完美方案——iOS的WebView自適應內容高度

    /////////////////////////////初始化,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:@"<div id=\"webview_content_wrapper\">%@</div>", htmlcontent]; [_webView loadHTMLString:htmlcontent baseURL:nil];
////////////////////////////////delegate的方法重載//////////////////////////////////////////// - (void)webViewDidFinishLoad:(UIWebView *)webView { //獲取頁面高度(像素) NSString * clientheight_str = [webView stringByEvaluatingJavaScriptFromString: @"document.body.clientHeight"]; float clientheight = [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').clientHeight + parseInt(window.getComputedStyle(document.getElementsByTagName('body')[0]).getPropertyValue('margin-top')) + parseInt(window.getComputedStyle(document.getElementsByTagName('body')[0]).getPropertyValue('margin-bottom'))"]; float height = [height_str floatValue]; //內容實際高度(像素)* 點和像素的比 height = height * frame.height / clientheight; //再次設置WebView高度(點) webView.frame = CGRectMake(0, 0, self.view.frame.size.width, height); }
相關文章
相關標籤/搜索