Ios 使用自定义布局在UICollectionView中动态移动单元框架

Ios 使用自定义布局在UICollectionView中动态移动单元框架,ios,objective-c,uicollectionview,uiviewanimation,uicollectionviewlayout,Ios,Objective C,Uicollectionview,Uiviewanimation,Uicollectionviewlayout,我正在尝试向UICollectionView/自定义布局中的单元格添加动态动画移动 基本上。。。当用户点击单元格a时,它会移动到中心,将附近的所有其他单元格(径向)推开,然后这些单元格会聚集在它周围,填满空间 现在,当用户再次点击它时,我希望动画反转 如果用户滚动,我希望动画流畅地、连续地、增量地继续或回放,直到某个阈值点,它一直朝那个方向移动 头脑风暴 根据来自UIScrollView的每个信号重新计算相关单元格的帧,然后使用setCollectionViewLayout:animated:连

我正在尝试向UICollectionView/自定义布局中的单元格添加动态动画移动

基本上。。。当用户点击单元格a时,它会移动到中心,将附近的所有其他单元格(径向)推开,然后这些单元格会聚集在它周围,填满空间

现在,当用户再次点击它时,我希望动画反转

如果用户滚动,我希望动画流畅地、连续地、增量地继续或回放,直到某个阈值点,它一直朝那个方向移动

头脑风暴

根据来自UIScrollView的每个信号重新计算相关单元格的帧,然后使用
setCollectionViewLayout:animated:
连续设置从旧布局到新布局的更改动画。。。但这样做不仅让人觉得非常愚蠢。。。当新信号在动画中出现时,它将不起作用

我能不能像任何常规视图一样,抓取可见单元格的帧并设置其帧更改的动画?使用
transitionWithView:duration:options:animations:completion:
UIViewAnimationOptionBeginFromCurrentState
来保持运动的连续性和可更新性

还有其他想法吗

编辑--当前暂定解决方案

现在,我要试试

1) 进入集合视图的可见单元格,仅获取相关单元格,并在必要时设置帧更改的动画

2) 我将使用这个CALayer技巧,这样我可以得到驱动细胞的连续位置更新信号,驱动细胞的动画,当它们接触时,它需要推开

3) 我将使用
shouldInvalidateLayoutForBoundsChange:
transitionWithView:duration:options:animations:completion:
uiviewanimationoptionbeginformcurrentstate
来实现流体、按需播放/回放功能

(快速视觉示例)