在 iOS 中实现 cross-controller 动画的最佳做法是什么?

What's the best practice to implement a cross-controller animation in iOS?

,----------.      ,----------.
|          |      |       ⓘ |
|  ,----.  |      |          |
|  |LOGO|  | ===> |          |
|  `----'  |      |          |
|   VC1    |      |   VC2    |
`----------'      `----------'

我想实现一个像上面草稿中描述的动画:当UI从VC1(可能是欢迎场景,中间有大logo)转到VC2(主场景,有圆圈)字母i在右上角是一个ABOUT按钮),我希望那个标志逐渐变成那个小圆圈

因为logo视图是VC1的,而圈起来的i是VC2的,不知道怎么动画才好.可能是把 LOGO 改成圆圈 i 的比例和位置,然后切换他们的可见性是个好方法(我不确定)

还有其他此类动画,有时简单的 transform --> toggle visibility 技巧无法处理:假设有一个文本视图(可能是标题)需要在 fromVCtoVC 的动画,其他视图(例如背景)需要变换(例如 alpha-blending、模糊等)。我做了一个 hack,使 textview 在开始时属于 fromVC,并在动画阶段将其交给 toVC,这在某种程度上可行,但看起来有点脏。有没有更好的方法(或最佳方法)来实现这一目标?

,-----------.      ,----------.
|           |      |  ,-----. |
|  ,-----.  |      |  |Title| |    The textview holding title may 
|  |Title|  | ===> |  `-----' |    translate during the animation
|  `-----'  |      |          |
|   VC1     |      |   VC2    |
`-----------'      `----------'

May be transforming LOGO to circled i 's scale and position and then toggle their visibility is a good way( I'm not sure)

是的。那就是我会做的方式。在单个视图控制器中管理动画,并在动画之前或之后立即在控制器之间切换。