iOS推送风格segue过渡

时间:2012-12-06 13:34:41

标签: ios uinavigationcontroller navigation styles transition

我想从右到左更改"幻灯片"我的导航视图控制器在推送另一个视图控制器时的转换。我在故事板中找到了一个选项,但它似乎不起作用。过渡风格仍然相同。 通过单击故事板中的目标视图控制器,我发现了这一点,虽然看起来转换是针对模态样式segue:

transition

所以,我的问题是,是否有可能使推送样式segue过渡看起来不同?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:6)

您可以在自定义Segue中使用CATransition来实现任何类型的转换。这是示例代码。

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


}

您可以访问此链接了解更多详情http://blog.jambura.com/2012/07/05/custom-segue-animation-left-to-right-using-catransition/

答案 1 :(得分:2)

为了进行推送转换,您需要使用连接视图的UINavigationController。这些都是一次关闭转换的模态转换选项。

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

我发现解决这个限制的最简单方法是在代码中执行此操作并在UIView动画或CAAnimation中包装没有动画的推送。