簡體   English   中英

Cocoa WebView - 加載本地HTML頁面

[英]Cocoa WebView - Loading a local HTML page

瀏覽了一下之后,我仍然無法弄清楚這一點。 我已將HTML頁面及其images目錄添加到Xcode中的項目資源組中(復制它們)。

當我嘗試使用以下代碼加載WebView時,文本顯示正常,但未加載圖像。

NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"index.html"];
NSString *htmlContent = [NSString stringWithContentsOfFile:path];
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
[[tempWebView mainFrame] loadHTMLString:htmlContent baseURL:url];

編輯:抱歉延遲,這里有一些失敗的基本HTML。

<html>
    <body> 
        <img src="images/bg.png"></img> 
    </body>
</html>

我編輯的代碼看起來像這樣 -

NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
NSURL *url = [NSURL fileURLWithPath:path];
[[webView1 mainFrame] loadRequest:[NSURLRequest requestWithURL:url]];

編輯2:剛剛意識到這是路徑的問題。 顯然<img src = "images/bg.png">不起作用,但如果我將bg.png復制到根目錄並說<img src = "bg.png">一切正常。 我仍然不確定我在哪里出錯了。

考慮執行以下操作:

  1. 不要自己獲取資源路徑並將子路徑裝訂到其上,而是要求捆綁包為您提供正確的路徑
  2. 而不是處理路徑, 請求捆綁包為您提供正確的URL (需要Mac OS X 10.6或更高版本。)
  3. 不要將HTML內容直接注入到框架中,而是要求WebView加載URL

這會將您的代碼減少到兩行,如果HTML代碼正確,則可以使用。

我認為這里的問題是在構建階段如何將文件復制到資源目錄。 在Xcode中顯示為組的任何文件夾在復制時都將被展平。 如果要將整個網站文件夾結構添加到項目中,則必須在添加結構時選擇“為任何添加的文件夾創建文件夾引用”。

例如:我有一個html文件,它引用同名文件夾中的圖像。 我將所有這些添加到我選擇'文件夾引用'的項目中:

添加文件

我的項目中的文件將如下所示(請注意藍色文件夾):

項目樹

構建項目時,將維護Web內容文件夾:

捆綁包中的Resources文件夾

無需開始設置基本URL或使用字符串加載。 現在可以成功加載網頁,如下所示:

NSURL *url = [[NSBundle mainBundle] URLForResource:@"LocalTestWeb" withExtension:@"html"];
[[self.webView mainFrame] loadRequest:[NSURLRequest requestWithURL:url]];

這段代碼適合我(只有Canvas的問題):

NSString* filePath = [[NSBundle mainBundle] pathForResource:@"index" 
                                                     ofType:@"html"
                                                inDirectory:@"html_files_folder"];
NSURL* fileURL = [NSURL fileURLWithPath:filePath];
NSURLRequest* request = [NSURLRequest requestWithURL:fileURL];
[[webView mainFrame] loadRequest:request];

您需要獲取base64字符串中的圖像文件數據。 並將該字符串放在img標簽中,如下所示。

<img src="data:image/png;base64,iVBORw0KGgoAAAANS..." />

有關詳細信息,請參閱此處: http//danielmclaren.com/node/90

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM