2016-06-12 17 views
1

UICollectionViewのすべてのセルにUIImageViewがあり、コレクションをスクロールするときにそれらが正しく表示され、すべてのイメージがセルのインデックスパスに1回ロードされるように、ロードする必要があります。Lazy Loading UICollectionViewイメージ

すべての画像はKinveyからダウンロードされます。すべての画像をダウンロードする

コード:

UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];  

UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, cell.bounds.size.width, cell.bounds.size.width)]; 

[cell addSubview:imageView];  

    [KCSFileStore downloadData:@"id for item at index path"] completionBlock:^(NSArray *downloadedResources, NSError *error) { 

     if (error == nil) { 

      KCSFile* file = downloadedResources[0]; 

      dispatch_async(dispatch_get_main_queue(), ^(void){ 

       imageView.image = [UIImage imageWithData:file.data]; 
      }); 

      NSLog(@"Downloaded."); 

     } else { 

      NSLog(@"Error: %@", error.localizedDescription); 
     } 

    } progressBlock:nil]; 

"dispatch_async(dispatch_get_main_queue()、^(ボイド)..." 私は非同期的に画像をダウンロード私の問題を解決しようとしたものですが、それがなかったこと作品。事前に

感謝。

+0

正確に何をしたいですか?バックグラウンドで画像をダウンロードし、スクロールして表示する必要がありますか? – Santo

+0

これはcellForRowで行われます...もしそうならば、ビューのレンダリングがゆっくりと遅くなり、ビューが積み重なり続けるようになるimageViewを追加し続けるでしょう – Joshua

答えて

0

あなたが画像をダウンロードしようとする理由。 サードパーティのライブラリを使用してcollectionViewにイメージの遅延ロードを実行する場合。その後、SDWebimages はそのための最善のサードパーティライブラリです。このライブラリは遅延ロードを実行するだけでなく、複数の他のオプションも提供します。見てみましょう。

希望すると、あなたの問題を解決するのに役立ちます。

関連する問題