推送导航动画而不重叠UIViewControllers

时间:2014-12-17 07:20:52

标签: ios swift animation uiviewcontroller segue

我想执行push segue但是修改动画,使得两个视图控制器在动画期间不会重叠,而是第二个视图控制器"推动"屏幕上的第一个视图控制器完全在左侧的平面上?

当您询问正在播放的电影然后点击其中一部电影时,Siri会显示此动画,然后当您点击烂番茄时再次显示此动画。请注意,它完全支持通过滑动后退手势进行交互式导航。

enter image description here

我想学习如何完全复制这个,但不知道从哪里开始。我想知道UIViewControllerTransitioningDelegate是否会在这里发挥作用以获得视图控制器之间的自定义转换?请注意,我只需要支持iOS 8+,这个segue在Storyboard中定义。

1 个答案:

答案 0 :(得分:0)

这应该是它,如果不是,你可以使用参数:

UIViewController *vc = ...
UINavigationController *currentNavigationController = ...

CATransition* animation = [[[CATransition alloc] init] autorelease];
[animation setType:kCATransitionPush];
[animation setSubtype:kCATransitionFromLeft];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[animation setDuration:0.5f];
[currentNavigationController.view.layer addAnimation:animation forKey:nil];
[currentNavigationController pushViewController:vc animated:NO];