IOS:动画 UICollectionViewCells 在改变方向时滑动

Posted

技术标签:

【中文标题】IOS:动画 UICollectionViewCells 在改变方向时滑动【英文标题】:IOS: Animate UICollectionViewCells to slide when changing orientation 【发布时间】:2013-02-03 23:35:11 【问题描述】:

我希望覆盖我的UICollectionViewFlowLayout,以在由于方向变化而改变位置时导致单元格滑动。我目前拥有的是纵向每行 3 个单元格和横向每行 4 个单元格,但我能得到的唯一动画是当我改变方向时默认淡入。

我一直在考虑使用 performBatchUpdates,但我很确定这不是我能找到答案的地方。

我也一直在研究layoutAttributesForElementInRectlayoutAttributesForItemAtIndexPath,我认为这是我可以找到答案的地方。我不确定是否需要为单元格创建一个新属性(可能是previousCenter)并将其用作新动画的起点,或者使用performBatchUpdates 使用应该是新帧的值作为值改变。

为了记录,我发现的所有动画问题都是关于如何更改动画以插入和删除项目,这不是我想要做的。

【问题讨论】:

【参考方案1】:

试试

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(    NSTimeInterval)duration 
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
    [self.collectionView reloadData];

然后添加你需要的任何东西来“滑动”它。

如果您使用的是 flowLayout 或其子类,它应该会自动为您重新定位单元格。如果您使用子类布局,您可能需要调整您返回的布局属性以对应于旋转。不过动画应该为您完成。

【讨论】:

以上是关于IOS:动画 UICollectionViewCells 在改变方向时滑动的主要内容,如果未能解决你的问题,请参考以下文章

iOS动画1 — UIView动画

iOS动画

聊聊iOS中的动画

ios和安卓的动画原理是啥

iOS核心动画高级技巧 - 8

iOS开发UI篇—核心动画(转场动画和组动画)