大家都知道拖動文件到Xcode中的時候有兩個選擇
兩種引入方式造成路勁的問題镣隶,需要不一樣的加載方式
1.以Create groups方式引入本地H5文件
Create groups方式添加了一個文件蒙挑,以黃色文件夾的形式存在的栅组,當(dāng)你想要使用文件夾中的某個類的頭文件時坞琴,你可以直接添加它的引用叁温,因為groups下的cpp文件是會被編譯的祷膳。
如果你加載本地h5選擇Create groups的格式導(dǎo)入H5文件客叉,會存在一個大坑,你會發(fā)現(xiàn)你加載了html文件脯宿,但是對應(yīng)的css和js加載不出來念颈。原因是groups方式編譯完后,所有文件都是存在bundle目錄下连霉,沒有層級關(guān)系了榴芳,直接引用就可以。然后html中代碼往往是這樣的:
html代碼中還是用絕對路徑去讀取文件跺撼,所以導(dǎo)致讀取不到j(luò)s和css文件了窟感!必須改成這樣:
注意:html中用到的圖片也必須改成直接引用。
這種加載方式我不推薦歉井,因為需要去改html中的代碼路徑柿祈,這樣前端人員還得維護兩套代碼,h5自己加載一般都是用絕對路徑哩至!
2.以Create folder references方式引入本地H5文件
選擇了 Create folder references方式添加進來的文件的文件夾是藍色的躏嚎,只是將文件單純的創(chuàng)建了引用,這些文件不會被編譯菩貌,所以在使用的時候需要加入其路徑卢佣,例如文件夾file下的demo類,其他類要引用的話就需要#import file/demo.h箭阶,否則編譯器就會告訴你找不到demo.h文件虚茶。
這樣加載本地H5就不會有路徑問題了,而且可以直接添加參數(shù)仇参。
我自己公司的需求是做到html方面的界面實現(xiàn)熱更新嘹叫,我的思路進入頁面就判斷沙盒中是否有html的一個文件夾,沒有的話加載拖進去的html然后把整個html的文件全部復(fù)制到沙盒中冈敛,有的話就加載沙盒中的html文件:
然后html文件中的代碼有改動,直接從服務(wù)端請求鸣皂,然后通過NSFileManager對沙盒中的文件內(nèi)容進行替換就可以實現(xiàn)html熱更新了抓谴!
附上一個知識點:
iOS加載部分Html代碼特殊符號需要用反斜杠\轉(zhuǎn)義暮蹂,例如雙引號,百分號等癌压!看情況使用仰泻。 ? ?
以上是我自己測試過可以用的,可能存在一些其他的問題滩届,希望遇到的朋友一起討論完善集侯!