UIcollectionView具有缓慢的图像加载和滚动

时间:2013-05-09 04:05:14

标签: xcode performance uiimage uicollectionview

我有一个UICollectionView,里面有一些图片。在第一次向下滚动时加载图像非常慢且不稳定。之后,当图像被加载时,它很好。

我想问题是图像不会被加载,直到单元格到达屏幕导致滞后。我假设我需要做的是在图像出现在屏幕上之前加载图像。我不知道该怎么做,显然是在寻找错误的东西,因为我找不到任何答案。请有人指出我正确的方向吗??

以下是加载图片的代码......图片在我的应用中未下载或任何内容。

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *CellIdentifier = @"Cell";
    CustomCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];
    [[cell myImage]setImage:[UIImage imageNamed:[arrayOfImages objectAtIndex:indexPath.item]]];

    return cell;
}

谢谢!

3 个答案:

答案 0 :(得分:5)

看看这个answer

出列后添加这两行

cell.layer.shouldRasterize = YES;
cell.layer.rasterizationScale = [UIScreen mainScreen].scale;

答案 1 :(得分:1)

即使您没有下载图像,如您所发现的,在滚动期间从永久存储加载仍然太慢。尝试将+ imageNamed:call视为下载,这将使代码更复杂,但修复响应性。 Poor UICollectionView Scrolling Performance With UIImage等其他问题的答案可能有所帮助。

答案 2 :(得分:0)

只需获取内容并将其以异步方式存储在数组中。并且只在委托方法中执行赋值部分。如果要一次显示所有单元格,请放置一个示例缩略图图像,并在阵列获得实际图像时将其替换为原始图像。否则,您可以在每次数组获取对象时重新加载集合视图,以便在获取图像时集合视图的单元格数量逐渐增加。