在项目中我希望页面跳转有不同的动画效果,我是一个喜欢将公用代码提交出来写成工具类的人,这个当然也不会放过,好了,看代码:
.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];