項目中需要加載本地的html,在添加到工程中時始赎,發(fā)現(xiàn)不顯示本地的資源圖片文件和橙,而且樣式也跟瀏覽器打開的不一樣。初步判斷是資源路徑讀取的問題造垛。
鑒于iOS沙盒機制的問題魔招,這些資源文件在編譯過程中,都被保存到同一資源路徑下了五辽。所以就需要我們修改html中圖片資源的讀取位置办斑。
如本地html中有如下代碼
圖片不顯示
<p class="imgB">src="images/icbcImg2.png" /></p>
就需要修改為:
src="icbcImg2.png" //沙盒中都在同級別目錄
樣式不加載
href = "css/reset.css"
href="css/style.css"
修改為:
href = "reset.css"
href="style.css"
1.拖動文件到Xcode,提示兩個選擇杆逗,“create groups”和“create folder references”乡翅,默認情況下為第一種,即所有加入到項目的文件都會在mainBundle根路徑下髓迎,即不管加入項目的文件的目錄結(jié)構(gòu)如何峦朗,在APP中都可以通過mainBundlePath/filename來訪問到;如果采用第二種方式排龄,則就會保留相對路徑,需要通過mainBundlePath/path/filename來訪問翎朱。通過這兩種方式到項目的文件夾顯示具有不同的顏色橄维。 選擇“create groups”,文件夾顏色為黃色拴曲。
html里有一個路徑的問題(? link href= "")争舞,在Xcode中, Xcode不能找到像url("../images/photo.png")這種路徑澈灼,所以應(yīng)該在Xcode中調(diào)整下html文件訪問本頁面圖片和css樣式文件的路徑竞川。
示例代碼:
NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
NSString *htmlString = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
NSString *basePath = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:basePath];
[self.webView loadHTMLString:htmlString baseURL:baseURL];
要注意的就是叁熔,因為baseURL的:baseURL
操作以經(jīng)把項目根目錄統(tǒng)一在項目下委乌。加載index.html中的image, css的話。就不再需要路徑(直接填寫圖片名, ? css文件名)荣回。這樣的html 就可以正常顯示html的完整內(nèi)容了遭贸。
2.選擇“create folder references”。藍色的文件夾心软。文件夾名字為urlName,里面包含一個名為index的html文件壕吹。
代碼如下:
NSURL * url = [NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"urlName"]];
NSURLRequest * request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];