在 UITabController 中的选项卡之间切换时使用“pushViewController”动画

Posted

技术标签:

【中文标题】在 UITabController 中的选项卡之间切换时使用“pushViewController”动画【英文标题】:Using 'pushViewController' animation when switching between tabs in UITabController 【发布时间】:2011-04-19 14:49:26 【问题描述】:

我在尝试使 UITabBarViewController 执行与 UINavigationController 在执行 pushViewController 时具有相同的动画时遇到问题。

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController 

UIViewController *currentVC = [tabBarController selectedViewController];
if (currentVC == viewController) 
    return NO;

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1];
UIModalTransitionStyle transition = UIModalTransitionStyleFlipHorizontal;
[UIView setAnimationTransition:transition forView:tabBarController.view cache:YES];
[currentVC viewWillAppear:YES];
[viewController viewWillDisappear:YES];
[viewController viewDidDisappear:YES];
[currentVC viewDidAppear:YES];
[UIView commitAnimations];
return YES;

以下代码在切换选项卡时执行动画:

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController 

UIViewController *currentVC = [tabBarController selectedViewController];
if (currentVC == viewController) 
    return NO;

[UIView beginAnimations:@"View Flip" context:nil];
[UIView setAnimationDuration:1.25];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:tabBarController.view cache:YES];
[currentVC viewWillAppear:YES];
[viewController viewWillDisappear:YES];
[viewController viewDidDisappear:YES];
[currentVC viewDidAppear:YES];
[UIView commitAnimations];

return YES;

如何修改上面的代码以从右侧动画执行幻灯片,类似于将 viewController 推入导航控制器?

【问题讨论】:

【参考方案1】:

看看这个链接:http://haveacafe.wordpress.com/2009/04/06/animated-transition-between-tabbars-view-on-iphone/

这个想法是,您需要使用标签栏控制器的委托方法并使用特定的动画类 CATransition(因为您正在视图之间“转换”)。查看CATransition documentation 以了解动画的类型/子类型。您可能需要一种带有 left 或 right 子类型的 push。

【讨论】:

尝试了他们给出的示例,但没有成功。也许它与较旧的 SDK 版本有关。

以上是关于在 UITabController 中的选项卡之间切换时使用“pushViewController”动画的主要内容,如果未能解决你的问题,请参考以下文章

使用 Storyboard 和 Monotouch 手动将更多选项卡添加到 UITabController

(Swift) 在嵌套在 Main UINavigationController 中的 UINavigationController 和 UITabController 之间切换

在 Oracle 表单中的选项卡之间移动项目

如何在 Ionic 中的选项卡之间传递数据

在 TabBarController 中的选项卡之间切换/导航

以编程方式在 Swift 中的选项卡之间切换