在項目中我希望頁面跳轉有不同的動畫效果,我是一個喜歡將公用代碼提交出來寫成工具類的人,這個當然也不會放過,好了,看代碼:
.h檔案:
[cpp]
#import <Foundation/Foundation.h>
#import <QuartzCore/QuartzCore.h>
@interface MyAnimationUtil : NSObject {
}
+(CATransition *)getAnimation:(NSInteger)mytag;
@end
.m檔案
[cpp]
#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
調用如下:
[cpp]
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];
摘自 RiverAM的專欄