How to change the Push and Pop animations in a navigation based app

来源:互联网 发布:大魔王ba淘宝买靠谱吗 编辑:程序博客网 时间:2024/06/07 15:00

I have a navigation based application and I want to change the animation of the push and pop animations. How would I do that?

========

This is how I've always managed to complete this task.

For Push:

MainView *nextView=[[MainView alloc] init];[UIView  beginAnimations:nil context:NULL];[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];[UIView setAnimationDuration:0.75];[self.navigationController pushViewController:nextView animated:NO];[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO];[UIView commitAnimations];[nextView release];

For Pop:

[UIView  beginAnimations:nil context:NULL];[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];[UIView setAnimationDuration:0.75];[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.navigationController.view cache:NO];[UIView commitAnimations];[UIView beginAnimations:nil context:NULL];[UIView setAnimationDelay:0.375];[self.navigationController popViewControllerAnimated:NO];[UIView commitAnimations];

another solution

I did the following and it works fine.. and is simple and easy to understand..

CATransition* transition = [CATransition animation];transition.duration = 0.5;transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];transition.type = kCATransitionFade; //kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade//transition.subtype = kCATransitionFromTop; //kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom[self.navigationController.view.layer addAnimation:transition forKey:nil];[[self navigationController] popViewControllerAnimated:NO];
this really is the most sane solution. Just a minor note for future visitors: the Animated:NO part is vital. If YES is passed, the animations mix and cause funny effects. 
 
Best solution so far.. And for the beginners, don't forget to include QuartCore (#import <QuartzCore/QuartzCore.h>) 

原创粉丝点击