6

アプリケーションバンドルに 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];
4

1 に答える 1

7

URLに時間を追加して問題を解決しました。したがって、画像はキャッシュされません。私の質問を参照してください。質問はクローズされたと見なされます。

于 2012-09-04T03:50:24.537 に答える