UIWebView 適配螢幕
UIWebView 適配螢幕
概述
這個問題困擾了我好多天,了尋找了很多解決方法但是不見效果。
首先我來說說故事背景吧,在一個專案的中,我被要求去把資料庫裡的一段HTML程式碼載入到app當中。我以為還是挺簡單的,但是問題來了。
如何在App中載入一大段 HTML呢???
首先 當然要用到 UIWebView,大家和我估計第一反應都是這樣。如何寫程式碼呢 check一下也很多。大體如下:
NSString *HTMLData = dataPostFormDataBase;
[self.webView loadHTMLString:HTMLData baseURL:[NSURL fileURLWithPath: [[NSBundle mainBundle] bundlePath]]];
so easy 媽媽再也不用擔心我的webView,但是問題又來了,HTML程式碼裡面 好像沒有定義寬高 約束佈局。到了webView裡面圖片就會變的 大的離譜。
那怎麼調整大小呢
Google了一下(不會被抓吧),查到這麼一個屬性:
self.webView.scalesPageToFit = YES;
然後 嘿,好想還真變小了,但是問題又來了,由於HTML 沒有定義約束,這是的圖片變的太小了,右邊有許多地方留白,那不是見鬼了啊。
於是乎又要踏上漫漫Google路。
用JS控制其寬度
經過查詢,原來可以在webView 中嵌入JS,屌炸了。然後我就知道怎麼調整寬高了。
思想如下:找到HTML程式碼中包裹img的父容器(我的是p標籤),把它的寬度調整為螢幕的寬度。值得注意的是,一定要在 didFinishLoad的後 才能新增JS,不然JS加上去沒用。原因,自己check一下吧。
具體程式碼如下:
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
//定義JS字串
NSString *script = [NSString stringWithFormat: @"var script = document.createElement('script');"
"script.type = 'text/javascript';"
"script.text = \"function ResizeImages() { "
"var myimg;"
"var maxwidth=%f;" //螢幕寬度
"for(i=0;i <document.images.length;i++){"
"myimg = document.images[i];"
"myimg.height = maxwidth / (myimg.width/myimg.height);"
"myimg.width = maxwidth;"
"}"
"}\";"
"document.getElementsByTagName('p')[0].appendChild(script);",ScreenW];
//新增JS
[webView stringByEvaluatingJavaScriptFromString:script];
//新增呼叫JS執行的語句
[webView stringByEvaluatingJavaScriptFromString:@"ResizeImages();"];
}
結語
上面純屬個人粗糙實現,如果有更好的辦法 可以和我分享我會更加感謝。
相關文章
- Flutter螢幕適配Flutter
- flutter 螢幕尺寸適配 字型大小適配Flutter
- android 螢幕適配Android
- 安卓螢幕適配的方案安卓
- Flutter螢幕適配 - 等比縮放Flutter
- Android 主流螢幕以及適配Android
- Android 螢幕適配工具類Android
- android螢幕適配詳解Android
- 【postcss-px-to-viewport】螢幕適配CSSView
- android螢幕適配三:通過畫素密度適配Android
- Android螢幕適配(理論適配100%機型)Android
- 移動 web 端螢幕適配 – remWebREM
- Android 螢幕適配終結者Android
- H5 分層螢幕適配H5
- Android開發之螢幕適配Android
- android螢幕適配的問題Android
- Android 螢幕適配最佳實踐Android
- 【移動適配】移動Web怎麼做螢幕適配(一)Web
- 【移動適配】移動Web怎麼做螢幕適配(三)Web
- 極其簡單的Flutter 螢幕適配Flutter
- Android螢幕適配總結和思考Android
- Android技能樹 — 螢幕適配小結Android
- 小豬淺談Android螢幕適配Android
- 淺談-web螢幕適配的解決方案Web
- Android螢幕適配前先了解這些Android
- android 今日頭條的螢幕適配理解Android
- 鴻蒙Banner圖一多適配不同螢幕鴻蒙
- Flutter螢幕適配,簡單粗暴的全域性適配方式Flutter
- 學習筆記:自適應佈局,多螢幕適配筆記
- android 螢幕適配二:手寫百分比佈局適配Android
- android 螢幕適配一:通過自定義View的方式實現適配AndroidView
- 適配iOS 11和iPhoneX螢幕適配遇到的一些坑iOSiPhone
- Android 螢幕適配:最全面的解決方案Android
- 實踐 | 為 Trackr app 適配大螢幕裝置APP
- 藉助HTML5做大螢幕適配的“生意”HTML
- [譯] Flutter —— 根據不同螢幕尺寸高效的適配 UIFlutterUI
- Android最全螢幕適配的幾個重要概念(三)Android
- flutter螢幕適配 ,一種一勞永逸的全域性適配方式Flutter