使用以编程方式创建的 segue IOS 调用自定义过渡动画师

Posted

技术标签:

【中文标题】使用以编程方式创建的 segue IOS 调用自定义过渡动画师【英文标题】:Call custom transition animator using a programmatically created segue IOS 【发布时间】:2015-02-27 20:43:32 【问题描述】:

我正在处理的项目需要在两个视图控制器之间进行自定义转换。我已经通过覆盖以下方法设置并实现了 UIViewControllerTransitioningDelegate:

- (id<UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController
                              animationControllerForOperation:(UINavigationControllerOperation)operation
                                           fromViewController:(UIViewController *)fromVC
                                             toViewController:(UIViewController *)toVC

   //Creation of animation
   id<UIViewControllerAnimatedTransitioning> animationController;
   MyAnimator *animator = [[MyAnimator alloc] init];
   animator.appearing = YES;
   animationController = animator;
   return animator

我已经设置了 MyAnimator 子类,通过重写方法正确实现 UIViewControllerAnimatedTransitioning:

- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext

    //custom transition animation

我用来触发动画转换的 segue 是通过编程方式创建和调用的,例如:

UIStoryboardSegue *segue = [[UIStoryboardSegue alloc] initWithIdentifier:@"showCardDetail" source:self destination:vc];
[self prepareForSegue:segue sender:self];
[segue perform];

以编程方式创建 segue 的原因:我在不同的故事板中有 from(transition from) 和 to(transition to) 视图控制器。

问题/问题: 我见过很多例子,都使用故事板 segue 处理自定义转换,例如:

[self performSegueWithIdentifier:@"storyboardSegue-id" sender:self]

我应该如何在 -perform 方法中为上面以编程方式创建的 segue 定义,以便发生自定义转换。

【问题讨论】:

【参考方案1】:

您无需创建自定义转场即可完成您想做的事情。事实上,由于您的 2 个控制器位于不同的情节提要中,因此您根本不应该使用 segue。只需实例化您的目标视图控制器,然后使用 pushViewController:animated: 来启动转换。您的第一个视图控制器应该是导航控制器的委托,因此您在问题顶部显示的委托方法会被调用。

【讨论】:

【参考方案2】:

navigationControllerAnimationControllerForOperation:fromViewController:toViewController: 中,您可以调整源视图控制器和目标视图控制器,并且基于此类型您将看到所需的动画。此处无需使用prepareForSegue:

【讨论】:

以上是关于使用以编程方式创建的 segue IOS 调用自定义过渡动画师的主要内容,如果未能解决你的问题,请参考以下文章

使用以编程方式创建的自定义 UITableViewController 管理 UITableView

如何创建可以从以编程方式创建的按钮调用的 segue?

如何使用 Swift 在 iOS 中以编程方式进行 segue

使用以编程方式创建的 Windows 媒体播放器进行基本播放

IOS - 如何使默认的后退按钮调用展开segue

如何使用以编程方式设置的图形/颜色对两个按钮进行分层