【问题标题】:Push navigation animation without overlapping UIViewControllers推送导航动画而不重叠 UIViewControllers
【发布时间】:2015-02-15 16:23:38
【问题描述】:

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

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

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

【问题讨论】:

  • UIPageViewController
  • @Bluehound 请注意,在 Siri 中,导航栏中的默认动画仍然出现在标题和后退按钮上,因此他们使用的是推送转场而不是 UIPageViewController

标签: ios swift animation uiviewcontroller segue


【解决方案1】:

应该是这样的,如果没有你可以玩参数:

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

【讨论】:

  • 这种作品(改成Right后)。但这会导致视图控制器的背景将 alpha 更改为 0。当我想保留默认导航栏动画时,它会移动整个屏幕。当你点击后退按钮时,它们在动画过程中仍然重叠。我需要一个交互式动画来导航,就像它在 Siri 中一样。 :)
猜你喜欢
  • 1970-01-01
  • 2020-06-07
  • 1970-01-01
  • 2018-09-25
  • 1970-01-01
  • 2011-03-09
  • 2015-08-21
  • 1970-01-01
  • 2023-04-11
相关资源
最近更新 更多