ios - 推送导航动画而不重叠 UIViewControllers

标签 ios swift animation uiviewcontroller segue

我想执行一个 push segue 但修改动画使得两个 View Controller 在动画期间不重叠,而是第二个 View Controller 将第一个 View Controller “推”出屏幕完全向左平面?

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

enter image description here

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

最佳答案

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

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];

关于ios - 推送导航动画而不重叠 UIViewControllers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27520198/

相关文章:

WPF 动画优化

java - 如何以编程方式更改动画实例的 "x-delta"?

iphone - 在 Storyboard 中使用 NSNotification

ios - 如何从特定记录区域获取记录

ios - 将 UIGestureRecognizer 限制在特殊区域

ios - 为什么 Xcode 模拟器 View 与 View 层次结构 View 不同

ios - 无法发出 URL 的文件扩展名

javascript - RequestAnimationFrame定期加快/降低速度

ios - 使用 NSFetchResult Controller 搜索

ios - 创建新文件时在 Swift 中继承 Viewcontroller