IOS開発ノート-SDWebImageに基づくネットワークピクチャロード処理

2616 ワード

前言:
IOSの下でURLを通じて1枚のネットのピクチャーを読むのはAspと似ていません.Netのように直接画像の経路を画像の経路の位置に置くことができますok、
ネットワークピクチャをロードしてから、ピクチャをピクチャパスに表示する必要があります.
ここでは、画像をロードするためのコードを探しました.
 
-(UIImage *) getImageFromURL:(NSString *)fileURL {
    //NSLog(@"        ");
    UIImage * result;
    NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL]];
    result = [UIImage imageWithData:data];
    return result;
}

この方法で処理するとUIIImageが得られ,UIインタフェースのUIIImage Viewに入れることができる.
 
//*----------------------------------------------------------------------------------------------------------------*/
アプリ開発では、ネット上の画像をロードする場合、一連の形で画像をロードすることが多いので、画像が多いとスレッドが詰まってしまう==!
だから、ユーザー体験を考慮して、ここでは非同期で画像をロードする方法を探す必要があります!
画像の非同期ロードについては、実は私もよく分かりません.そこで、ネット上のオープンソースのプロジェクトSDWebImageを参考にしてUIImageViewを拡張しました.
最終的には、ネットワーク画像のロードを最適化し、2つの新しい特性を得ることができます.
1.マルチピクチャ非同期ロード.
2.ピクチャのロードが完了すると、ピクチャマネージャでキャッシュされます.
最も重要なコードは次のとおりです.
 
- (void)setImageWithURL:(NSURL *)url refreshCache:(BOOL)refreshCache placeholderImage:(UIImage *)placeholder
{
	
    // Remove in progress downloader from queue
	
    self.image = placeholder;
	
    if (url)
    {
        if ([[CustomObject sharedCustomObject] isExistImage:url]) {
            NSLog(@"    ");
            self.image = [[CustomObject sharedCustomObject]getImage:url];
        }
        else{
            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
                NSData * data = [[NSData alloc]initWithContentsOfURL:url];
                UIImage *image = [[UIImage alloc]initWithData:data];
                if (data != nil) {
                    dispatch_async(dispatch_get_main_queue(), ^{
                        [[CustomObject sharedCustomObject] addImage:image key:url];
                        self.image = image;
                    });
                }
            });
        }
    }
}

 
 
1つのNSURLのピクチャパスオブジェクトに直接入力してピクチャをロードすることができ、ロードが空でなければピクチャキャッシュをピクチャマネージャに入れて一例保存し、次回この方式を呼び出すとURLにデリードキャッシュがあるか否かを判断する.
このように非同期でロードすると、画像をキャッシュするタスクが完了します.
インスタンスソースコードは、ここを突き刺すことができる.OK.
積極的に心を込めて、仕事に努力して、学習を堅持して、率直に分かち合って、正面から楽観的で、感謝しています