试图中断交互式UICollectionView布局转换

时间:2017-03-27 16:10:38

标签: ios uicollectionview uicollectionviewlayout

有没有办法在现有的交互式布局转换过程中开始新的UICollectionViewTransitionLayout?**

描述[sample project]

我们已经构建了一个UI组件,它表示具有一组UICollectionViewLayout s的不同状态。这些布局中的每一个都附加到平移手势以在状态之间导航。平移手势完成后,我们会调用cancelInteractiveTransition()finishInteractiveTransition()来完成转换。

所有这些都按预期工作,但我们无法弄清楚如何中断交互式转换。一个示例用例是用户已经向上滑动以导航到新状态,但是然后想要在动画结束之前向下滑动以返回。

我们尝试过的事情:

  • 无论之前的状态如何,在下一个平移手势开始时立即呼叫startInteractiveTransition
    • 这导致setTransitionProgress:崩溃,因为我们的其他转场布局仍然有效(尚未完成动画制作)
  • 返回一个自定义UICollectionViewTransitionLayout,可以在转换过程中对所有UICollectionViewLayoutAttributes进行快照。

    1. 我们会在新的panGesture时快照布局属性 开始

    2. 然后,我们会将transitionProgress调整为1.0并致电finishInteractiveTransition以完成其中的转换 暂停状态

    3. 我们会使用已暂停的UICollectionViewLayout初始化新的自定义[UICollectionViewLayoutAttributes]并尝试 从那里过渡到我们新的理想的互动最终布局

      • 这会暂时暂停动画,但由于我们必须在初始平移手势完成后调用cancelInteractiveTransitionfinishInteractiveTransition,因此似乎没有办法调整结束布局。< / LI>

GIF显示控件: GIF showing control

0 个答案:

没有答案