8

動的に生成されたHTMLを経由して表示するUIWebViewがあります

[_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 に答える