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

來源:互聯網
上載者:User

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

    /////////////////////////////初始化,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.offsetHeight"]; 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').offsetHeight + 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);}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.