2011-04-19 67 views
2

我在尝试使UITabBarViewController执行与UINavigationController执行pushViewController时相同的动画时遇到了问题。切换标签时在UITabController中的标签之间切换时使用'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的动画类型/子类型。您可能需要使用左侧或右侧子类型的推送类型。

+0

尝试了他们给出的例子,但它没有奏效。也许它适用于较旧的SDK版本。 – sonics876 2011-04-19 21:19:34