前言:
最近在研究整個(gè)界面用oc嵌套html+js做這么個(gè)東西食听,需求大概就是用webView(wkwebview)加載本地html淌实,然后oc和js互相引用(iOS用JSC引擎做交互吧不會(huì)卡線程之類的很好用),然后我就遇到了一個(gè)坑永高,淚奔啊帆调,可算是破解了嚣镜,今天我要分享給大家~~~
1.究竟是什么坑激挪?
在本人拖入html之后界面試了好幾次本地webview加載辰狡,卻總也加載不出來,這個(gè)我也是問了幾個(gè)人垄分,加載本地宛篇,大家給的都是一下答案
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *htmlPath = [path stringByAppendingString:@”ui.html”];
[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:htmlPath]]];
這個(gè)加載本地webview想必大家非常熟練,方法上出錯(cuò)也是不可能的锋喜,但是很少有人會(huì)注意到這么獲取本地資源會(huì)出現(xiàn)路徑的問題些己!路徑路徑路徑 豌鸡!
2.解決辦法和注意點(diǎn)
在ios項(xiàng)目下添加本地HTML+JS/css/image 當(dāng)拖入項(xiàng)目時(shí)有兩種選擇:
一個(gè)是 Create groups for any added folders (創(chuàng)建虛擬結(jié)構(gòu)-包結(jié)構(gòu))
一個(gè)是 Create folder references for any added folders (創(chuàng)建實(shí)體結(jié)構(gòu))
注意:
選第一個(gè)Create group:
當(dāng)文件夾被引入后嘿般,引入的文件會(huì)被加到同一個(gè)文件夾下而忽略了原本的文件路徑,而html他們給的文件夾路徑必然是原來他們?cè)O(shè)定好的涯冠,如果選這個(gè)引入后人家原來關(guān)聯(lián)的css啊還是img的路徑就亂了炉奴,因此在HTML文件中的路徑就會(huì)出現(xiàn)問題,圖片什么的肯定show不出來了蛇更,但不會(huì)報(bào)錯(cuò)瞻赶。
選擇使用這個(gè),代碼就如下派任,但是搞不好人家路徑識(shí)別不了砸逊。
NSString?*path?=?[[NSBundle?mainBundle]?bundlePath];
NSString?*htmlPath?=?[path?stringByAppendingString:@”ui.html”];
[_webView?loadRequest:[NSURLRequest?requestWithURL:[NSURL?URLWithString:htmlPath]]];
選第二個(gè)Create folder references:
選擇這個(gè)添加完成后,編譯過后引入的文件會(huì)按照原本的目錄結(jié)構(gòu)存放掌逛,然后添加相對(duì)路徑师逸,就完美的解決了路徑問題,豆混。
[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"js_html/ui.html" relativeToURL:[[NSBundle mainBundle] bundleURL]]]];
css篓像、img在html里寫的時(shí)候應(yīng)該是原路徑相互關(guān)聯(lián)設(shè)定好的动知。我當(dāng)然是選擇~~不是原諒他啊(偷笑.png)员辩,是第二個(gè)Create folder references盒粮。
其他解決方法,我們可以加到沙盒中從沙盒讀取奠滑,還要什么解決辦法大家可以自己想下丹皱。
最后,希望大家細(xì)心點(diǎn)完美的跳過此坑~~~
怎么使用oc與js交互也非常簡(jiǎn)單养叛,之后持續(xù)更新~~