2016-06-12 136 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库不仅执行延迟加载,但也提供了多个其他选项。只要看看。

希望这会帮助你解决你的问题。