21

UIWebView を使用してローカル html を読み込みます。Objc によって作成された html 内に PNG ファイルがあります。

PNG ファイルを変更した後、UIWebView で html をリロードしましたが、画像は変更されません。ただし、アプリを終了して再度開くと、画像ファイルは新しいものに変更されます。

Documents の PNG ファイルを Finder で確認したので、確かに変更されていると思いますが、古いものは UIWebView に残っています。

だから、それはUIWebViewのキャッシュの問題だと思うので、試してみました:

  • [[NSURLCache sharedURLCache] removeAllCachedResponses];

  • [_webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:url isDirectory:NO ] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:1]];またNSURLRequestReloadIgnoringCacheData

PNGファイルは多くの場所(他のhtmlおよびobjcコード)で使用されているため、それらのどれも機能せず、ファイル名を変更できません。

私もこれを試しまし some.png?r=randomNumber たが、表示できません。

ローカルの HTML 内でローカルの画像ファイルを使用する場合、UIWebView キャッシュをクリアするにはどうすればよいですか?

4

3 に答える 3

2

AppDelegate.m でこれを試すことができます

+(void)initialize {
  [[NSURLCache sharedURLCache] setDiskCapacity:0];
  [[NSURLCache sharedURLCache] setMemoryCapacity:0];
}
于 2013-02-09T00:33:39.767 に答える
1

HTML が変更されておらず、唯一の変更が画像にある場合は、リクエストを再度ロードする代わりにUIWebViewのメッセージを使用する必要があります。reload

このようなもの:

- (void)reloadWebView:(id)sender
{
    if (self.loaded) {
        [self.webView reload];
    } else {
        NSString *html = [[NSBundle mainBundle] pathForResource:@"web" ofType:@"html"];
        NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL fileURLWithPath:html]];
        [self.webView loadRequest:request];
        self.loaded = YES;
    }
}

キャッシュを操作する必要さえありません。

于 2013-05-31T03:38:50.447 に答える