4

iPhoneアプリにいくつかのHTMLといくつかの画像があり、次のように配置されています。

html/
    foo.html
images/
    bar.png

からロードする方法と、html ディレクトリからディレクトリ ツリーをさかのぼる方法のいずれかbar.pngです。UIWebViewfoo.htmlNSUrl

<img src="../images/bar.png"/>

foo.htmlまたは、 を使用して文字列にロードし、次のようloadHtmlStringに使用[[NSBundle mainBundle] bundleURL]しますbaseURL

<img src="images/bar.png"/>

どちらも扱いにくいですが、最初のケースでは、HTML ファイルを移動する場合、すべての相対パスを再調整する必要があり、2 番目のケースでは、HTML ファイルの実際のパス構造を無視する必要があります。

私がやりたいのはこれです -

<img src="/images/bar.png"/>

-- をbundleURL「サイト」のルートとして扱います。これを機能させる方法はありますか、またはそれを翻訳しfile:///images/bar.pngてファイルが見つからない運命にありますか?

4

2 に答える 2

1

これを行う唯一の方法は、アプリに Web サーバーを埋め込むことです。Matt Gallagherが、これに関するブログ投稿を行っています。または、CocoaHTTPServerMongooseをプロジェクトにドロップすることもできます。

于 2012-01-25T13:54:02.470 に答える
0

私が間違っていなければ、Web ビューにロードしたいファイルがプロジェクト バンドルにいくつかあります。次の数行のコードで簡単に実行できます。

NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"bar" ofType:@"png"];
NSURL    *imageURL  = [NSURL fileURLWithPath:imagePath];

Web ビューのパターンを含む text/html ファイルがあると仮定しています。そこにオブジェクトとして画像を追加し ( src="%@"...) imageURL、パターンに追加する必要があります。

NSString *path = [[NSString alloc]initWithString:[[NSBundle mainBundle]pathForResource:@"htmlPattern" ofType:@"html"]];
NSError *error;
NSString *pattern = [[NSString alloc]initWithContentsOfFile:path 
                                                   encoding:NSUTF8StringEncoding
                                                      error:&error];


htmlPage = [[NSString  alloc]initWithFormat:pattern,
            imageURL; 
webView = [[UIWebView alloc] initWithFrame:WEBVIEW_FRAME];
[webView loadHTMLString:htmlPage baseURL:[NSURL URLWithString:path]];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:pattern]]];
于 2012-06-11T20:11:43.543 に答える