iOS開發之解決WebView自適應內容高度__iOS

來源:互聯網
上載者:User

這段時間寫的項目中,有涉及到根據後端上傳的表單內容,然後在移動端將內容排版重新展示的功能點,所以小小的寫一下解決辦法。

首先如果直接進行內容展示,或者進行sizeToFit的操作,那麼可能會造成圖片超過螢幕大小,字型變得很小的結果,所以這裡用到了UIWebView的delegate方法和添加了html的標籤語言,使用了javascript操作方法。具體可以研究代碼,如下:

//web-(UIWebView *)detailWebView{    if (_detailWebView == nil) {        _detailWebView = [UIWebView new];        _detailWebView.delegate = self;        _detailWebView.scrollView.bounces = NO;        _detailWebView.scrollView.showsHorizontalScrollIndicator = NO;        _detailWebView.scrollView.scrollEnabled = NO;        _detailWebView.dataDetectorTypes = UIDataDetectorTypeAll;        [_detailWebView sizeToFit];    }    return _detailWebView;}

 NSString *htmlcontent = [NSString stringWithFormat:@"<head><style>img{max-width:%fpx !important;}</style></head><div id=\"webview_content_wrapper\">%@</div>",f_Device_w-30,detailDic[@"content"]];        [_detailWebView loadHTMLString:htmlcontent baseURL:nil];

#pragma mark ----- webView 的 delegate- (void)webViewDidFinishLoad:(UIWebView *)webView{    //擷取頁面高度(像素)    NSString * clientheight_str = [webView stringByEvaluatingJavaScriptFromString: @"document.body.offsetHeight"];    float clientheight = [clientheight_str floatValue];    //設定到WebView上    webView.frame = CGRectMake(15, _whereNewsLabel.bottom+10, f_Device_w-30, clientheight);        //下面這樣寫就是擷取到比較準確的內容高度,不需要再進行其他計算了    //擷取內容實際高度(像素)    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];        //再次設定WebView高度(點)    webView.frame = CGRectMake(15, _whereNewsLabel.bottom+10, f_Device_w-30, height);        if ([self.delegate respondsToSelector:@selector(backWebViewWithHeight:)]) {        [self.delegate backWebViewWithHeight:webView.bottom+5];    }}

有寫代碼是我項目中使用的,沒有必要用,大家可以根據自己的需要修改,必要的代碼上面都有,有問題可以留言,不喜勿噴,謝謝。









相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.