1. 程式人生 > >UIWebView載入html,不顯示資源圖片,不載入css樣式

UIWebView載入html,不顯示資源圖片,不載入css樣式

專案中需要載入本地的html,不顯示本地的資源圖片檔案,而且樣式也跟瀏覽器開啟的不一樣。初步判斷是資源路徑讀取的問題。

鑑於iOS沙盒機制的問題,這些資原始檔在編譯過程中,都被儲存到同一資源路徑下了。所以就需要我們修改html中圖片資源的讀取位置。

如本地html中有如下程式碼,圖片不顯示

src="images/icbcImg2.png" />

就需要修改為:

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根路徑下,即不管加入專案的檔案的目錄結構如何,在APP中都可以通過mainBundlePath/filename來訪問到;如果採用第二種方式,則就會保留相對路徑,需要通過mainBundlePath/path/filename來訪問。通過這兩種方式到專案的資料夾顯示具有不同的顏色。選擇“create groups”,資料夾顏色為黃色。

html裡有一個路徑的問題(  link href= ""),在Xcode

中, Xcode不能找到像url"../images/photo.png"這種路徑,所以應該在Xcode中調整下html檔案訪問本頁面圖片和css樣式檔案的路徑。

示例程式碼:

NSString *path = [[NSBundlemainBundle]pathForResource:@"index"ofType:@"html"];

NSString *htmlString = [NSStringstringWithContentsOfFile:pathencoding:NSUTF8StringEncodingerror:nil];

NSString *basePath = [[NSBundle

mainBundle]bundlePath];

NSURL *baseURL = [NSURLfileURLWithPath:basePath];

    [self.webView loadHTMLString:htmlString baseURL:baseURL];

要注意的就是,因為baseURL的:baseURL

操作以經把專案根目錄統一在專案下。載入index.html中的image, css的話。就不再需要路徑(直接填寫圖片名,   css檔名)。這樣的html就可以正常顯示html的完整內容了。

2.選擇“create folder references”。藍色的資料夾。資料夾名字為urlName,裡面包含一個名為indexhtml檔案。

程式碼如下:

NSURL * url = [NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"urlName"]];

NSURLRequest * request = [NSURLRequest requestWithURL:url];

[self.webView loadRequest:request];

閱讀原文:http://codecloud.net/12765.html