8

我有一个 UIWebView 我通过显示动态生成的 HTML

[_webView loadHTMLString:htmlString baseURL:applicationDocumentsDirectory];

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

我努力了:

[[NSURLCache sharedURLCache] removeAllCachedResponses];

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

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

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

有任何想法吗?

4

3 回答 3

0

嗨,每当我加载以前加载的页面时,我都会遇到与 uiwebview 类似的问题,显示旧内容。经过进一步调查,我发现 uiwebview 内容在后台加载,然后在加载完成后显示;但是,在加载旧内容时会显示。我通过制作我自己的 uiwebview 加载代表并添加我自己的加载符号来代替显示旧内容来解决我的问题。

    -(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;
}

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

于 2012-10-07T13:13:37.027 回答
0

您应该对图像有适当的参考,否则可能无法正常工作。如果您有同一级别的图像和 html 文件,请尝试使用类似的东西,

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

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

我希望它有效。

于 2012-10-07T10:27:36.147 回答
-1

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

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

我希望这有效

于 2015-11-20T11:18:04.773 回答