具有自定义布局的UICollectionView中单元格框架的动态移动

时间:2017-04-27 04:49:08

标签: ios objective-c uicollectionview uiviewanimation uicollectionviewlayout

我试图在我的UICollectionView /自定义布局中为单元格添加动态动画移动。

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

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

如果用户滚动,我希望动画流畅,连续,渐进地继续或倒回,直到某个阈值点朝向那个方向。

头脑风暴

重新计算相关细胞'来自UIScrollView的每个信号上的帧,然后用setCollectionViewLayout: animated:连续动画从旧布局到新布局的变化我的脑海中......但它不仅感觉到一种非常愚蠢的方式来做它...它在动画中期出现新信号时,它不会工作。

我是否可以抓住可见单元格的框架并为其框架更改设置动画,就像使用常规视图一样?使用transitionWithView:duration:options:animations:completion:UIViewAnimationOptionBeginFromCurrentState来保持运动连续和可更新?

还有其他想法吗?

编辑 - 当前暂定解决方案

此刻,我要去尝试......

1)进入集合视图的可见单元格,只需抓取相关单元格,并在必要时为框架更改设置动画。

2)我将使用此CALayer技巧Core animation progress callback,以便我可以获得驱动单元的连续位置更新信号,以驱动它们需要推出的单元格的动画接触。

3)我将shouldInvalidateLayoutForBoundsChange:transitionWithView:duration:options:animations:completion:UIViewAnimationOptionBeginFromCurrentState一起使用以实现流畅的点播,播放/回放功能

(快速视觉示例)

Phase 1 Phase 2 Phase 3

0 个答案:

没有答案