Teo*_*Teo 5 navigation styles transition uinavigationcontroller ios
我想在推送另一个视图控制器时更改导航视图控制器的"从右向左滑动"转换.我在故事板中找到了一个选项,但它似乎不起作用.过渡风格仍然相同.通过单击故事板中的目标视图控制器,我发现了这一点,虽然它看起来像是模式样式segue的过渡:

所以,我的问题是,是否有可能使推送样式segue过渡看起来不同?如果是这样,怎么样?
您可以在自定义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];
}
Run Code Online (Sandbox Code Playgroud)
您可以访问此链接了解更多详情http://blog.jambura.com/2012/07/05/custom-segue-animation-left-to-right-using-catransition/
为了进行推送转换,您需要使用 UINavigationController 连接您的视图。这些都是一次性转换的模式转换选项。
出于同样的原因,至少在故事板中,如果您已经在使用 UINavigationController,则除了推送之外您不能使用任何其他内容。
我发现解决此限制的最简单方法是在代码中执行此操作,并在没有将动画包装在 UIView 动画或 CAAnimation 中的情况下包装推送。
| 归档时间: |
|
| 查看次数: |
8064 次 |
| 最近记录: |