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