在过渡animation中共享两个viewController之间的图像

自从UIViewControllerAnimatedTransitioning协议在IOS 7中可用以来,我遇到了viewControllers之间非常酷的转换。最近我注意到Intacart的IOS应用程序中特别有趣的一个。

这里是我正在慢慢议论的animation: https : //www.dropbox.com/s/p2hxj45ycq18i3l/Video%20Oct%2015%2C%207%2023%2059%20PM.mov?dl=0

首先,我认为它与本教程中的作者相似,并带有一些额外的淡入和淡出animation: http : //www.raywenderlich.com/cn/113845/ios-animation-tutorial-custom-view-控制器演示跃迁

但是,如果仔细观察,看起来像第一个viewController淡出的两个viewController之间的产品图像转换。 我认为有两个viewControllers的原因是,当你刷新视图,你仍然可以看到它后面的原始视图没有布局的变化。

也许两个viewController实际上有产品形象(不淡出),并以某种方式同时animation,以完美的精度,其中一个淡入淡出。

你认为在那里发生了什么?

如何编写这样一个过渡animation,看起来像是在两个viewControllers之间共享的图像?

这可能是两个不同的意见和animation快照视图。 实际上,这正是为什么发明快照视图的原因。

这就是我的应用程序。 当呈现的视图向上和向下滑动时,观察红色矩形的移动:

在这里输入图像说明

它看起来像红色的视图离开第一个视图控制器,并进入第二个视图控制器,但这只是一个幻想。 如果您有自定义的过渡animation,则可以在过渡期间添加额外的视图。 因此,我创build了一个与第一个视图类似的快照视图,隐藏了真正的第一个视图,并移动了快照视图 – 然后删除快照视图并显示真正的第二个视图。

同样的事情(这是一个很好的技巧,我用它在很多应用程序):它看起来像标题已经从第一个视图控制器表视图单元松动,并滑入到第二个视图控制器,但它只是一个快照视图:

在这里输入图像说明