2011-07-16 9 views
3

ビューに複数の画像を表示したい。画像はインターネットからダウンロードされ、gif形式です。UIWebViewでGIF画像を表示するときの問題

これは私がやったことですが、デフォルトの壊れたアイコンだけが表示されます。

_imagesはNSArrayのは、私はこれを試してみましたが、画像がそのように私はのUIWebViewは私の画像を表示することができると信じて表示される画像ファイルのパス

NSMutableString *html = [NSMutableString string]; 

for (NSString *str in _images) { 
    [html appendFormat:@"<img src='%@' />", str]; 
} 

[_webView loadHTMLString:html baseURL:nil]; 

を格納しています。

NSData *data = [NSData dataWithContentsOfFile:[_images lastObject]]; 
[_webView loadData:data MIMEType:@"image/gif" textEncodingName:@"UTF-8" baseURL:nil]; 

複数の画像を表示するには他の方法がありますか?それ以外の場合は、各画像のUIImageViewを作成し、スクロールビューに配置する必要があります。

答えて

2

UIWebViewは、(テストで証明したように).GIFイメージの表示に問題がありません。破損したアイコンは、通常、指定したURLにイメージが見つからない場合に表示されます。そのため、(ブラウザのURLを開いて)画像のURLを確認したい場合があります。

個人的には、UIScrollViewをUIImageViewsとともに使用することにします。 UIWebViewは、コンテンツの読み込みと表示がかなり遅くなる傾向があります。 UIWebViewにはもう1つの欠点があります.JavaScriptのイベント処理を実装する必要があります。ユーザーがUIWebView内の画像の1つをタップすると、短いが目立つ遅延があります。さらに進むと、スワイプや他のジェスチャー認識をイメージに追加したい場合は、それを行うjavascriptライブラリをインポートする必要があります。あなたの画像にユーザーのやりとりが必要ない場合、そのような不利な点は実際にあなたのケースではカウントされません。一方、UIWebViewを使用すると、そのコンテンツが自動的に非同期に読み込まれるため、非常に便利です。

UIImageViewsソリューションを使用したUIScrollViewは、ユーザー対話処理を非常に簡単にします。 UIGestureRecognizersをイメージに追加してください。一方、たくさんの画像や大きな画像がある場合、それらを同時に読み込むことはできません。そうしないと、メモリの警告が発生します。したがって、現在表示されている画像のみをロードし、表示されていない画像を解放するロジックを追加する必要があります。また、画像の読み込み中にスクロールをブロックしないように、画像の非同期読み込みを実装する必要があります。

イメージのサイズがすべて同じ場合は、UITableViewを使用してイメージを表示し、それを使って表のセルを再利用して、メモリのフットプリントを小さくすることができます。しかし、まだ非同期読み込みを実装する必要があります。

とにかく、この場合は間違いないと思います。ユーザーのインタラクションを必要としない場合は、UIWebViewを簡単に実装することができますが、IMHOではUIScrollView/UITableViewのユーザーエクスペリエンスは向上します。