Iphone页面跳转动画的封装

fmms 7年前

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

.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];