UICollectionViewController多线程图像加载

时间:2013-02-07 18:59:34

标签: iphone objective-c

我无法在视图控制器之间异步加载图像。我有一个tableView控制器,当你单击一行时打开一个集合视图控制器。当集合视图打开时,它会挂起一段时间,因为图像是从互联网上下载的。

我将以下代码放在collectionView:cellForItemAtIndexPath:中,但这导致同步加载,并使程序滞后。

-(UICollectionViewCell *) collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath{

  static NSString *CellIdentifier = @"CollectionCell";
  CollectionCell *cell = [cv dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];
  NSData *imageData = [NSData dataWithContentsOfURL:[self.theImage objectAtIndex:indexPath.row]];
  cell.itemImage.image = [UIImage imageWithData:imageData];

  return cell;
}

我的问题是,其中如何我实现代码,以便集合视图在下载图像时加载空单元格(然后在下载后显示) ?

我试图使用盛大的中央调度,但我无法弄明白。如果有人可以帮我指出正确的方向,我会很感激。

1 个答案:

答案 0 :(得分:0)

对于那种延迟加载,我总是使用:

https://github.com/rs/SDWebImage

当我想在表/集合视图等中同步加载图像时,这解决了我的大部分问题。

它支持已经下载的图像的缓存,只是省去了很多麻烦。