iOS推送式分段转换

iOS推送式分段转换,ios,uinavigationcontroller,navigation,styles,transition,Ios,Uinavigationcontroller,Navigation,Styles,Transition,当导航视图控制器按下另一个视图控制器时,我想更改它的“从右向左滑动”转换。我在故事板中找到了一个选项,但它似乎不起作用。过渡样式仍然相同。 通过单击故事板中的目标视图控制器,我发现了这一点,尽管看起来过渡是针对模态样式序列的: 所以,我的问题是,有没有可能让推式的segue转换看起来有所不同?如果是,如何进行?为了实现推送转换,您需要使用UINavigationController连接视图。这些都是一次性转换的模式转换选项 出于同样的原因,至少在故事板中,如果您已经在使用UINavigatio

当导航视图控制器按下另一个视图控制器时,我想更改它的“从右向左滑动”转换。我在故事板中找到了一个选项,但它似乎不起作用。过渡样式仍然相同。 通过单击故事板中的目标视图控制器,我发现了这一点,尽管看起来过渡是针对模态样式序列的:


所以,我的问题是,有没有可能让推式的segue转换看起来有所不同?如果是,如何进行?

为了实现推送转换,您需要使用UINavigationController连接视图。这些都是一次性转换的模式转换选项

出于同样的原因,至少在故事板中,如果您已经在使用UINavigationController,那么除了push之外,您不能使用其他任何东西


我发现,绕过这一限制的最简单的方法是在代码中完成推送,而不在UIView动画或动画中包装动画。

您可以在自定义序列中使用CATTransition来实现任何类型的转换。下面是示例代码

-(void)perform {

__block UIViewController *sourceViewController = (UIViewController*)[self sourceViewController];
__block UIViewController *destinationController = (UIViewController*)[self destinationViewController];                    

CATransition* transition = [CATransition animation];
transition.duration = .25;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush; //kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade
transition.subtype = kCATransitionFromLeft; //kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom



[sourceViewController.navigationController.view.layer addAnimation:transition
                                            forKey:kCATransition];

[sourceViewController.navigationController pushViewController:destinationController animated:NO];    


}

您可以访问此链接了解更多详细信息

回答得很好,兄弟。。。我找了很久:-)