在将视图控制器推入/关闭UICollectionViewTransitionLayout
堆栈时,是否可以子类化UINavigationController
来更改自动(例如非交互式)动画?
苹果文档和互联网上的一些文章表明它应该是可能的:
如果您想要提供的不仅仅是从旧布局到新布局的线性转换,您需要自己子类并为项目提供布局属性
......但我还没有找到办法。
我想使用UICollectionViewController
的{{1}}将一个集合视图控制器推到另一个上面(使用相同的数据源)。两个视图控制器使用useLayoutToLayoutNavigationTransitions
的不同子类,我希望使用自定义UICollectionViewLayout
进行转换,这些子类需要由UICollectionViewLayoutAttributes
进行关键帧和修改。
我希望,只需实现transitionProgress
即可,但只有在交互式转换时才会调用该方法。
我推出的最佳方法是在UICollectionView上调用collectionView:transitionLayoutForOldLayout:newLayout:
并在完成处理程序中推送没有动画的新视图控制器。为了弹出视图控制器,我会挂钩到视图控制器的startInteractiveTransitionToCollectionViewLayout:completion:
并检查堆栈中的当前视图控制器;如果它不存在,我可以再次执行-viewWillDisappear:
不知怎的,我猜有更好的方法......