[Ios] 在uiwebview中使用本地html從相對路徑加載資源


Answers

在Swift中:

 func pathForResource(  name: String?, 
                        ofType ext: String?, 
                        inDirectory subpath: String?) -> String?  {

  // **name:** Name of Hmtl
  // **ofType ext:** extension for type of file. In this case "html"
  // **inDirectory subpath:** the folder where are the file. 
  //    In this case the file is in root folder

    let path = NSBundle.mainBundle().pathForResource(             "dados",
                                                     ofType:      "html", 
                                                     inDirectory: "root")
    var requestURL = NSURL(string:path!)
    var request = NSURLRequest(URL:requestURL)

    webView.loadRequest(request)
}
Question

我有一個非常簡單的iOS應用程序,加載了一個非常簡單的測試頁面(test.html):uiwebview:

<html>
<body>
<img src="img/myimage.png" />
</body>
</html>

我將這個test.html文件加載到我的web視圖中:

NSURL *url = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"html"];
NSString *html = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
NSURL *baseUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
[webView loadHTMLString:html baseURL:baseUrl];

這工作正常,如果我引用沒有相對路徑的圖像,並將引用的圖像放在根目錄下XCode中的目標 - >複製束資源下,但我不能讓它與我的HTML文件中顯示的相對路徑一起工作。 必須有一種方法可以做到這一點,我有很多圖像,CSS,JavaScript文件,我想加載到Web視圖中,我不想在根目錄中必須包含所有內容,並且必須更改網站中的所有引用應用程序。




我只是這樣做:

    UIWebView *webView = [[[UIWebView alloc] init] autorelease];

    NSURL *url = [[NSBundle mainBundle] URLForResource:@"index" withExtension:@"html"];
    NSURLRequest* request = [NSURLRequest requestWithURL:url];
    [webView loadRequest:request];

其中“index.html”相對引用圖片,CSS,JavaScript等




在使用WKWebView的Swift 3.01中:

let localURL = URL.init(fileURLWithPath: Bundle.main.path(forResource: "index", ofType: "html", inDirectory: "CWP")!)
myWebView.load(NSURLRequest.init(url: localURL) as URLRequest)

這調整了3.01中一些更精細的語法更改,並保持目錄結構到位,以便嵌入相關的HTML文件。




我已經回去測試並重新測試了這一點,看起來我可以使它工作的唯一方式(因為我在img文件夾中有一些文件,而在js / css等中有一些文件)不是為了在html中使用我的圖像的相對路徑,並將所有內容都引用到包文件夾中。 多可惜 :(。

<img src="myimage.png" />