アプリケーションバンドルに HTML が埋め込まれています。loadHtmlString を使用してロードしています。同時に、ドキュメント フォルダーにいくつかの画像ファイルがあります。html の img をドキュメント フォルダー内の画像に置き換えたいと考えています。たとえば、ここに私が持っているサンプルhtmlがあります:
<div id="image">
<a href="image">
<img src="@image" class="center">
</a>
</div>
次のコードを使用して、@image をドキュメントのファイル パスに置き換えています。
NSString* imgFile = [NSString stringWithFormat:@"file:///%@/%@",
[NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Images"],@"myimage.png"];
text = [text stringByReplacingOccurrencesOfString:@"@image" withString:imgFile];
NSURL* baseUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] resourcePath]];
[self.webView loadHTMLString:text baseURL:baseUrl];
(テキストは、私の html ファイルの html テキストです)。
このコードが呼び出されたときに初めて機能します。しかし、たとえば、myimage.png を変更してコードを再度呼び出すと、変更前の画像が表示されたままになります。(ドキュメント フォルダ内のファイルを確認しましたが、既に正しく変更されています)。
原因はキャッシュだと思います。誰でもアドバイスできますか?
ありがとう
ノート:
キャッシュが原因です。次の方法を使用して UIWebView に画像の新しいコピーを強制的にロードさせることで問題を解決しました。
NSString* imgFile = [NSString stringWithFormat:@"file:///%@/%@?t=%d",
[NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Images"],@"myimage.png",time(NULL)];
text = [text stringByReplacingOccurrencesOfString:@"@image" withString:imgFile];