ios - UICollectionview 加载单元格时滚动不连贯

标签 ios objective-c uicollectionview uicollectionviewcell xcode-instruments

我的应用程序中有一个画廊,使用了 UICollectionView。细胞大小约为 70,70。我正在使用存储在列表中的库中 ALAssetLibrary 中的 ALAssets

我正在使用通常的模式来填充单元格:

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

  mycell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];
  mycell.imageView.image = [[UIImage imageWithCGImage:[alassetList objectAtIndex:indexpath.row] thumbnail]];
  return mycell;
}

我的画廊滚动时断断续续。我不明白这是为什么。我尝试添加一个 NSCache 来缓存缩略图(认为创建图像可能很昂贵)但这对性能没有帮助。

我希望 UI 能像普通应用一样流畅。

我现在怀疑它可能是 UICollectionViewCell prepareForReuse 中的某些东西阻止了 dequeueReusableCellWithReuseIdentifier 方法,但使用工具我无法找到它。

还有其他可能导致这种情况的原因吗?是否有一种“更快”的方式来准备 UICollectionViewCell 或以更快的方式dequeue 它们?

最佳答案

所以任何遇到滚动问题的人都应该做 this

在出队后添加这两行

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

关于ios - UICollectionview 加载单元格时滚动不连贯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18460655/

相关文章:

ios - 有没有办法阻止 UICollectionView 重复使用单元格?

ios - PubNub 如何配置 ios 基本聊天应用程序

ios - 如何在 swift5 和 Alamofire 5 beta 版本中获取和保存响应?

iphone - 达到 NSDictionary 中最深的子级别

ios - 当绝对坐标中的框架发生变化时如何得到通知?

swift - CollectionViewCell 更改 didSelectItemAt 和 didDeselectItemAt 上的颜色

ios - 预览 UICollectionViewCell

iOS - 延迟后 UITableView 重新加载数据

ios - 在呈现另一个 View Controller 时,如何阻止 "from" View 变黑?

iphone - NSNumberFormatter 和舍入百分比值