收藏夹视图插入项目奇怪的动画

时间:2018-11-06 11:42:12

标签: swift animation uicollectionview

我有一个旋转180度的消息收集视图(以便将单元格从底部追加)。

collectionView?.transform = CGAffineTransform.init(rotationAngle: (-(CGFloat)(Double.pi)))

cell.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi))

我想在添加新单元格时使用insertItem选项,但是它会使这些单元格执行尴尬的动画,其中屏幕上可见的这些动画上下颠倒并翻转到另一侧。但是,当它们滚动出视线并返回视线时,它们会重置为正确的位置。

这是该错误的视频:https://www.youtube.com/watch?v=2X8FjOf5AqA

2 个答案:

答案 0 :(得分:0)

之所以发生这种情况,是因为在添加新单元格时调用performBatchUpdates时,将重新渲染所有可见的单元格,并再次 应用转换,从而实质上删除了转换。

>

您只希望此操作发生一次,因此单元格将保持其变换。为此,请确保单元格的变换与collectionView的变换匹配,我们知道该变换不会改变(因为集合视图本身未在performBatchUpdates上重新呈现)。

此外,您无需反转任何一种变换--π旋转等于π旋转。

collectionView?.transform = CGAffineTransform.init(rotationAngle: CGFloat(Double.pi))

cell.transform = collectionView!.transform

答案 1 :(得分:0)

我相信我通过以下方法解决了该问题:在自定义集合视图单元格内创建一个UIView,并在该视图内放入所有内容(如文本气泡),然后按pi旋转视图(而不是按pi旋转单元格) 。我仍然使用上面Bradley的答案旋转了集合视图。

collectionView?.transform = CGAffineTransform.init(rotationAngle: CGFloat(Double.pi))