【发布时间】:2013-08-29 22:02:28
【问题描述】:
我的应用中有一个使用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 他们以更快的方式?
【问题讨论】:
-
使用工具,你有没有发现一个方法调用花费了太多时间?例如。 0.02 秒重复使用一个单元格对于平滑滚动来说太长了。
-
是的。在这样做之后,我看到方法 [uicollectionview updatevisiblecellsnow] 被调用了很多次。谷歌搜索了这个问题并得到了这个问题stackoverflow.com/questions/16336772/…。
-
尝试将单元格的一些与显示相关的函数移动到集合视图的 willDisplayCell 方法,将其他的移动到 didEndDisplayingCell 方法。
-
这是我最新的完美平滑滚动集合视图,带有实时视频预览(一次最多 16 个:youtu.be/7QlaO7WxjGg 它甚至使用封面流自定义布局和“反射”视图完美反映视频预览。源代码在这里:mediafire.com/download/ivecygnlhqxwynr/…
标签: ios objective-c uicollectionview uicollectionviewcell xcode-instruments