应用程序文档文件夹中的UIWebView图像无法刷新

时间:2012-10-07 09:03:00

标签: iphone ios ipad uiwebview image

我有一个UIWebView,我通过

显示动态生成的HTML
[_webView loadHTMLString:htmlString baseURL:applicationDocumentsDirectory];

HTML包含<img src="chart1.png">等图片。每次生成HTML时,图像也都是新生成的。 (我已经检查过它们确实位于正确的位置并进行了更新。)但是,在第一次运行后,如果我更改数据并重新启动我的UIWebView,它将使用旧图像。

我试过了:

[[NSURLCache sharedURLCache] removeAllCachedResponses];

无济于事。 (也许并不奇怪,因为这与NSURLRequests相关。)

我知道存在绝对URL的可能性,但我没有尝试过这看起来很麻烦,我希望它能够使用这些简单的相对URL。问题不是找到图像,而是适当地更新它们。

我也知道你可以通过将src更改为chart1.png?1234这样的数字随机生成且始终唯一的方式来诱骗浏览器认为图像是动态的。对于一个应该易于解决的问题,这似乎也是一种无用的解决方法。

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

您应该对图像有适当的参考,否则可能无效。如果你有同一级别的图像和html文件,那么尝试使用这样的东西,

<img src="./chart1.png">

或者,如果您想要文件夹中的图像,请使用正确的路径参考来引用它。

我希望它有效。

答案 1 :(得分:0)

嗨我在uiwebview遇到类似问题,每当我加载以前加载的页面时,都会显示旧内容。在进一步调查后,我发现uiwebview内容在后台加载,然后在完成加载后显示;但是在加载旧内容时会显示。我修复了我的问题,让我自己的uiwebview加载代理并添加我自己的加载符号insteaad显示旧内容。

    -(void)webViewDidStartLoad:(UIWebView *)webView{

webView.hidden = true;
loader.animationImages =[NSArray arrayWithObjects:

                            [UIImage imageNamed:@"1.png"],
                            [UIImage imageNamed:@"2.png"],
                            [UIImage imageNamed:@"3.png"],
                            [UIImage imageNamed:@"4.png"],
                            [UIImage imageNamed:@"3.png"],
                            [UIImage imageNamed:@"2.png"],
                            [UIImage imageNamed:@"1.png"],
                            [UIImage imageNamed:@"5.png"]
                             ,nil];


loader.animationDuration = 1.5;

loader.animationRepeatCount = 100;
[loader startAnimating];

}
-(void)webViewDidFinishLoad:(UIWebView *)webView{

[loader stopAnimating];
webView.hidden  = false;
}

记得链接代表和所有其他东西 我希望这有助于:)

答案 2 :(得分:-1)

您需要提供图像源的绝对路径。

NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                     NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString* path = [documentsDirectory stringByAppendingPathComponent:
                  @"/chart1.png" ];

我希望这有效