2012-12-06 39 views
5

我想在导航视图控制器按下另一个视图控制器时更改“从右向左”的“从右向左”过渡。我在故事板中找到了一个选项,但它似乎不起作用。过渡风格仍然相同。 通过单击故事板的目的视图控制器我发现了这一点,虽然它看起来像过渡是模态风格SEGUE:iOS push style segue transition

transition

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

回答

2

为了进行推送转换,您需要使用连接视图的UINavigationController。这些都是一次过渡的模式转换选择。

同样,至少在故事板中,如果您已经在使用UINavigationController,则无法使用其他任何操作。

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

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/

+0

大答案兄弟......我看着它很长一段时间:-) –