iOS WebView內(nèi)容的適配

在開發(fā)過程中很多時候為了節(jié)約時間成本嵌套一些H5頁面,頁面的內(nèi)容有的在H5代碼里做過適配有的沒做過,這就造成了有些頁面在移動設(shè)備上走形。下面說一下工程中遇到的一個問題:頁面文字適應(yīng)而圖片沒有適應(yīng),頁面顯示為文字在屏幕寬度之內(nèi)而圖片保留了網(wǎng)頁端的大小,使webView橫向容量非常大。。。

解決方式是調(diào)用JS語言,調(diào)整一下其中圖片的高度,這個時機可以選擇在webView的代理方法里,代碼如下


- (void)webViewDidFinishLoad:(UIWebView *)webView {

    NSString *js = @"function imgAutoFit() { \

    var imgs = document.getElementsByTagName('img'); \

    for (var i = 0; i < imgs.length; ++i) {\

    var img = imgs[i];  \

    img.style.maxWidth = %f;  \

    } \

    }";

    js = [NSString stringWithFormat:js, [UIScreen mainScreen].bounds.size.width - 20];

    [_webView stringByEvaluatingJavaScriptFromString:js];

    [_webView stringByEvaluatingJavaScriptFromString:@"imgAutoFit()"];

}

這段代碼表示遍歷H5頁面中所有的圖片并按比例縮放。

完成這步之后會發(fā)現(xiàn)圖片已經(jīng)適配OK了,但是底部會空出很大一部分空白,這是因為webview加載完之后容量固定了,但是適配之后實際內(nèi)容高度變小了,留出了一片空白。這個時候需要再次調(diào)用JS調(diào)整頁面高度,代碼如下:

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

    float clientheight = [clientheight_str floatValue];

    //設(shè)置到WebView上

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

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

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

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

    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];

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

    height = height * frame.height / clientheight;

最后得到的height就是壓縮圖片后的實際高度。關(guān)于JS這一塊兒的了解不是很多,這部分代碼是從別處搜集的,還是比較實用的,記錄一下。


如果這篇文章對您有幫助, 請把下面的愛心點一下

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容