我有一个旋转180度的消息收集视图(以便将单元格从底部追加)。
collectionView?.transform = CGAffineTransform.init(rotationAngle: (-(CGFloat)(Double.pi)))
cell.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi))
我想在添加新单元格时使用insertItem选项,但是它会使这些单元格执行尴尬的动画,其中屏幕上可见的这些动画上下颠倒并翻转到另一侧。但是,当它们滚动出视线并返回视线时,它们会重置为正确的位置。
答案 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))