在项目中我希望页面跳转有不同的动画效果,我是一个喜欢将公用代码提交出来写成工具类的人,这个当然也不会放过,好了,看代码:
.h文件:
#import <Foundation/Foundation.h> #import <QuartzCore/QuartzCore.h> @interface MyAnimationUtil : NSObject { } +(CATransition *)getAnimation:(NSInteger)mytag; @end .m文件
#import "MyAnimationUtil.h" #include<stdlib.h> @implementation MyAnimationUtil //获得动画 +(CATransition *)getAnimation:(NSInteger)mytag{ CATransition *animation = [CATransition animation]; animation.delegate = self; animation.duration = 0.7; animation.timingFunction = UIViewAnimationCurveEaseInOut; switch (mytag) { case 1: animation.type = kCATransitionFade; break; case 2: animation.type = kCATransitionPush; break; case 3: animation.type = kCATransitionReveal; break; case 4: animation.type = kCATransitionMoveIn; break; case 5: animation.type = @"cube"; break; case 6: animation.type = @"suckEffect"; break; case 7: animation.type = @"oglFlip"; break; case 8: animation.type = @"rippleEffect"; break; case 9: animation.type = @"pageCurl"; break; case 10: animation.type = @"pageUnCurl"; break; case 11: animation.type = @"cameraIrisHollowOpen"; break; case 12: animation.type = @"cameraIrisHollowClose"; break; default: break; } int i = (int)rand()%4; switch (i) { case 0: animation.subtype = kCATransitionFromLeft; break; case 1: animation.subtype = kCATransitionFromBottom; break; case 2: animation.subtype = kCATransitionFromRight; break; case 3: animation.subtype = kCATransitionFromTop; break; default: break; } return animation; } @end 调用如下:
UserRegisterViewController *userregister = [[UserRegisterViewController alloc]initWithNibName:@"UserRegisterViewController" bundle:nil]; userregister.userregisterdelegate = self.rootdelegate; [self.navigationController pushViewController:userregister animated:NO]; CATransition * animation = [MyAnimationUtil getAnimation:6]; [self.navigationController.view.layer addAnimation:animation forKey:nil]; [userregister release];