0

JSONWebサービスからアプリに複数の画像をロードしたい。これらの画像は、私のアプリの「ストア」のサムネイルとして機能します。そのため、ユーザーがボタンをクリックして「ストア」に移動すると、リクエストが送信されます。そして、このリクエストは、ユーザーがボタンをクリックするたびに繰り返されます。

ここでは問題はありませんが、JSONのデータが大量に増えると問題が発生します。以前は、5つの画像のみを読み込んでいました。現在、少なくとも18枚の画像を読み込んでいます。画像が100倍以上になると、これらは実際の問題を引き起こす可能性があります。

画像のキャッシュに使用することを検討してNSURLCacheいますが、画像に更新があるかどうかをどのように知ることができますか?新しい画像が追加された、または現在の画像が使用されなくなったとしましょう。誰かが私にこれにアプローチするための最良の方法について何かアイデアを与えることができますか?

4

1 に答える 1

1

https://github.com/rs/SDWebImageから SDWebImageを使用して、Web サービスから複数の画像を読み込むことができます。

  • 最初にプロジェクト名を右クリックする必要があります:->ファイルをyourProjectに追加->選択したSDWebImageprojectを追加します

注:- コピー オプションをチェックしないでください

  • xcode のプロジェクト名をクリックしてフェーズをビルドします:->ターゲットの依存関係:-> + ボタンをクリックして、SDWebimage ARC を追加します。

  • ライブラリをクリックしてリンクバイナリを選択し、+ボタンを追加してlibSDWebimageARC.aを追加し、もう一度+をクリックしてimageIO.frameworkを追加し、libxml2.dylibを追加します

  • ビルド設定に移動:->その他のリンク フラグ:-> -ObjC を追加

  • およびヘッダー検索パスにこの 3 つの項目を追加します

    1 /usr/include/libxml2

    2 "$(OBJROOT)/UninstalledProducts/include"

    3 「$(TARGET_BUILD_DIR)/usr/local/lib/include」

次のようなコードを実装できます:- #import <SDWebImage/UIImageView+WebCache.h>

imageView = [[UIImageView alloc] init];


            UIActivityIndicatorView *activityIndicator = [[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite] autorelease];
            activityIndicator.hidesWhenStopped = YES;
            activityIndicator.hidden = NO;
            [activityIndicator startAnimating];


            [imageView setImageWithURL:[NSURL URLWithString:strUrlSting]
                      placeholderImage:nil options:SDWebImageProgressiveDownload
                               success:^(UIImage *image) { [activityIndicator stopAnimating];[activityIndicator removeFromSuperview]; }
                               failure:^(NSError *error) {  [activityIndicator stopAnimating];[activityIndicator removeFromSuperview]; }];

            [imageView addSubview:activityIndicator];


            imageView.contentMode = UIViewContentModeScaleAspectFit;
            imageView.clipsToBounds = YES;
            imageView.tag = 1;
            imageView.backgroundColor = [UIColor blackColor];

スムーズに歓声を上げるようにビルドして実行します.... :)

于 2013-02-13T05:00:55.080 に答える