【发布时间】:2013-07-17 15:51:35
【问题描述】:
我有一个带有图像网格的 UICollectionView。当您点击一个时,它会打开网格并显示一个包含一些细节的子视图。像这样:
我通过调整 UICollectionViewLayoutAttributes 并在 transform3D 属性上为所选项目的当前行下方的所有单元格设置转换来打开 UICollectionViewLayout 中的网格。与我第一次尝试在网格中插入另一个大小与其他单元格不同的单元格相比,它的效果非常好,并且是一个更好的动画和更简单的方法。
无论如何...它大部分时间都可以使用,但是在继续使用后,我会在集合视图上看到旧图像。它们就像幽灵细胞。我无法单击它们,就好像它们没有从集合视图中正确删除,它们位于单元格顶部,防止点击,只是令人讨厌。像这样:
任何想法为什么这些细胞会这样做?
编辑: 我想补充一点,我认为只有当我快速滚动集合视图时才会发生这种情况。我已经编写了自己的 UICollectionViewFlowLayout 替换来测试它是否仍然发生。确实如此。
编辑 2: 3d 变换或布局与此无关。一定是 UICollectionView 的 bug。我可以通过快速滚动、停止然后查询屏幕上的视图来利用。单元格的数量通常是原来的两倍,但它们是隐藏的,因为它们彼此堆叠在一起。由于我所做的翻译,我上面的实现揭示了它们。
这也确实会损害性能。
查看我的答案以获得解决方案。
【问题讨论】:
-
能发个截图吗?
-
奇怪的随机时刻,几个小时前就看到了。看了你的个人资料页面。有一个应用程序的想法。去寻找 Flickr API。在 Github 上看到 FlickrKit。认出了这个名字。哈哈!网络接收!
-
是的,我到处走走......你在利兹,我来自利兹......实际上,我正要开车去那里。
-
未来从这里增加一些观点:我似乎在 iOS 6 下遇到了这个问题,但在 iOS 7 下没有。当单元格应该在 6 下通过动画移动时,它们通常会留下副本;滚动时,如果我在该集合视图单元格的
removeFromSuperview或集合视图的willRemoveSubview:的创意子类中添加代码以检查是否删除,我看到视图永远不会被删除。在 iOS 7 下我看不到这样的问题。所以我认为Apple已经修复了这个错误。根据迄今为止的 cmets,我觉得我还应该补充:我五年前在约克住了五年。 -
你也应该看看这篇文章。 stackoverflow.com/questions/12927027/… 我认为是同一件事,但更优雅的解决方案。我还没有完全测试。
标签: ios uicollectionview