现在的位置: 首页 > 综合 > 正文

各种动画效果

2018年01月23日 ⁄ 综合 ⁄ 共 5174字 ⁄ 字号 评论关闭

#define IMAGE1 @"01.jpg"

#define IMAGE2 @"02.jpg"

#define DURATION 0.7f //设置运动时间

@interface MainViewController ()

@property (nonatomic, assign) int subtype;//枚举下标

@end

typedef enum : NSUInteger {

    Fade = 1,                   //淡入淡出

    Push,                       //推挤

    Reveal,                     //揭开

    MoveIn,                     //覆盖

    Cube,                       //立方体

    SuckEffect,                 //吮吸

    OglFlip,                    //翻转

    RippleEffect,               //波纹

    PageCurl,                   //翻页

    PageUnCurl,                 //反翻页

    CameraIrisHollowOpen,       //开镜头

    CameraIrisHollowClose,      //关镜头

    CurlDown,                   //下翻页

    CurlUp,                     //上翻页

    FlipFromLeft,               //左翻转

    FlipFromRight,              //右翻转

    

} AnimationType;

@implementation MainViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {

        // Custom initialization

    }

    return self;

}

- (void)viewDidLoad

{

    _subtype = 0;

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    [self addBgImageWithImageName:IMAGE2];

    NSArray *arr = [NSArray arrayWithObjects:@"淡入淡出", @"推挤",@"揭开",@"覆盖",@"立方体",@"吮吸",@"翻转",@"波纹",@"翻页",@"反翻页",@"开镜头",@"关镜头",@"下翻页",@"上翻页",@"左翻页",@"右翻页",nil];

    

    for (int i = 1; i < 17; i++) {

        UIButton *tap = [UIButton buttonWithType:UIButtonTypeSystem];

        tap.frame = CGRectMake(10, i *  20 + 64,100, 20);

        tap.tag = 1000 + i;

        [tap setTitle:[arr objectAtIndex:i - 1] forState:UIControlStateNormal];

        [tap addTarget:self action:@selector(clicked:) forControlEvents:UIControlEventTouchUpInside];

        [self.view addSubview:tap];

        

        

    }

    

    

}

#pragma CATransition动画实现

- (void) transitionWithType:(NSString *) type WithSubtype:(NSString *) subtype ForView : (UIView *) view

{

    //创建CATransition对象

    CATransition *animation = [CATransition animation];

    

    //设置运动时间

    animation.duration = DURATION;

    

    //设置运动type

    animation.type = type;

    if (subtype != nil) {

        

        //设置子类

        animation.subtype = subtype;

    }

    

    //设置运动速度

    animation.timingFunction = UIViewAnimationOptionCurveEaseInOut;

    

    [view.layer addAnimation:animation forKey:@"animation"];

}

#pragma UIView实现动画

- (void) animationWithView : (UIView *)view WithAnimationTransition : (UIViewAnimationTransition) transition

{

    [UIView animateWithDuration:DURATION animations:^{

        [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

        [UIView setAnimationTransition:transition forView:view cache:YES];

    }];

}

#pragma 给View添加背景图

-(void)addBgImageWithImageName:(NSString *) imageName

{

    self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:imageName]];

}

- (void)clicked:(id)sender

{

    UIButton *button = sender;

    AnimationType animationType = button.tag - 1000;

    

    NSString *subtypeString;

    

    switch (_subtype) {

        case 0:

            subtypeString = kCATransitionFromLeft;

            break;

        case 1:

            subtypeString = kCATransitionFromBottom;

            break;

        case 2:

            subtypeString = kCATransitionFromRight;

            break;

        case 3:

            subtypeString = kCATransitionFromTop;

            break;

        default:

            break;

    }

    _subtype += 1;

    if (_subtype > 3) {

        _subtype = 0;

    }

    

    

    switch (animationType) {

        case Fade:

            [self transitionWithType:kCATransitionFade WithSubtype:subtypeString ForView:self.view];

            break;

            

        case Push:

            [self transitionWithType:kCATransitionPush WithSubtype:subtypeString ForView:self.view];

            break;

            

        case Reveal:

            [self transitionWithType:kCATransitionReveal WithSubtype:subtypeString ForView:self.view];

            break;

            

        case MoveIn:

            [self transitionWithType:kCATransitionMoveIn WithSubtype:subtypeString ForView:self.view];

            break;

            

        case Cube:

            [self transitionWithType:@"cube" WithSubtype:subtypeString ForView:self.view];

            break;

            

        case SuckEffect:

            [self transitionWithType:@"suckEffect" WithSubtype:subtypeString ForView:self.view];

            break;

            

        case OglFlip:

            [self transitionWithType:@"oglFlip" WithSubtype:subtypeString ForView:self.view];

            break;

            

        case RippleEffect:

            [self transitionWithType:@"rippleEffect" WithSubtype:subtypeString ForView:self.view];

            break;

            

        case PageCurl:

            [self transitionWithType:@"pageCurl" WithSubtype:subtypeString ForView:self.view];

            break;

            

        case PageUnCurl:

            [self transitionWithType:@"pageUnCurl" WithSubtype:subtypeString ForView:self.view];

            break;

            

        case CameraIrisHollowOpen:

            [self transitionWithType:@"cameraIrisHollowOpen" WithSubtype:subtypeString ForView:self.view];

            break;

            

        case CameraIrisHollowClose:

            [self transitionWithType:@"cameraIrisHollowClose" WithSubtype:subtypeString ForView:self.view];

            break;

            

        case CurlDown:

            [self animationWithView:self.view WithAnimationTransition:UIViewAnimationTransitionCurlDown];

            break;

            

        case CurlUp:

            [self animationWithView:self.view WithAnimationTransition:UIViewAnimationTransitionCurlUp];

            break;

            

        case FlipFromLeft:

            [self animationWithView:self.view WithAnimationTransition:UIViewAnimationTransitionFlipFromLeft];

            break;

            

        case FlipFromRight:

            [self animationWithView:self.view WithAnimationTransition:UIViewAnimationTransitionFlipFromRight];

            break;

            

        default:

            break;

    }

    

    static int i = 0;

    if (i == 0) {

        [self addBgImageWithImageName:IMAGE1];

        i = 1;

    }

    else

    {

        [self addBgImageWithImageName:IMAGE2];

        i = 0;

    }

    

}

抱歉!评论已关闭.