2016-06-12 185 views
1

UICollectionView的每個單元都有一個UIImageView,我需要加載它們,這樣當你滾動瀏覽集合時,它們會正確顯示,並且每個圖像都會在其索引路徑上加載一次。延遲加載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()^(無效)......」是我試圖解決我的問題下載圖像異步,但是這並沒有如果你想使用第三方庫中的CollectionView圖像進行延遲加載提前工作。

感謝。

+0

你想要做什麼?在倒影下載圖像,而滾動它應該出現,不是嗎? – Santo

+0

這是在cellForRow上完成的......如果是這樣,你將繼續添加imageView,這將使視圖渲染速度越來越慢,視圖不斷堆積 – Joshua

回答

0

爲什麼你嘗試下載圖像。 。然後SDWebimages 是最好的第三方庫that.this庫不僅執行延遲加載,但也提供了多個其他選項。只要看看。

希望這會幫助你解決你的問題。