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