// // ViewController.m // IOS-动画特效 // // Created by wangtouwang on 15/5/5. // Copyright (c) 2015年 wangtouwang. All rights reserved. // #import "ViewController.h" #define kDuration 0.7 // 动画持续时间(秒) #define KS_HEIGTH [UIScreen mainScreen].bounds.size.height #define KS_WIDTH [UIScreen mainScreen].bounds.size.Width @interface ViewController () @property(nonatomic,strong) UIView *imageView; @end @implementation ViewController @synthesize typeID; @synthesize blueView; @synthesize greenView; -(void)animationFunction:(UIButton *)btn{ NSInteger index = btn.tag; CATransition *transition = [CATransition animation]; //代理 transition.delegate = self; //持续时间 transition.duration= kDuration; //类型 transition.type = [self getAnimationType:index]; //方向 transition.subtype = [self getSubType]; // 动画的开始与结束的快慢*/ transition.timingFunction = UIViewAnimationCurveEaseInOut; //事件源 NSInteger blue = [[_imageView subviews] indexOfObject:blueView]; NSInteger green = [[_imageView subviews] indexOfObject:greenView]; [_imageView exchangeSubviewAtIndex:green withSubviewAtIndex:blue]; //开始动画 [_imageView.layer addAnimation:transition forKey:@"animation"]; } -(void)animationFunction2:(UIButton *)btn{ NSInteger index = btn.tag; CGContextRef context = UIGraphicsGetCurrentContext(); [UIView beginAnimations:nil context:context];//开始一个动画块 [UIView setAnimationDelegate:self];//代理 [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];//设置动画块中的动画属性变化的曲线。 [UIView setAnimationDuration:kDuration];//在动画块中设置动画的延迟属性 (以秒为单位) //在动画块中为视图设置过渡 switch (index) { case 10: [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.view cache:YES]; break; case 9: [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES]; break; case 12: [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES]; break; case 11: [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES]; break; default: break; } //事件源 NSInteger blue = [[_imageView subviews] indexOfObject:blueView]; NSInteger green = [[_imageView subviews] indexOfObject:greenView]; [_imageView exchangeSubviewAtIndex:green withSubviewAtIndex:blue]; // 动画完毕后调用某个方法 //[UIView setAnimationDidStopSelector:@selector(animationFinished:)]; [UIView commitAnimations];//结束一个动画块并开始当他在动画块外时 } -(NSString *)getAnimationType:(NSInteger)index{ NSString *type=nil; switch (index) { case 5: type = kCATransitionFade; break; case 6: type = kCATransitionPush; break; case 7: type = kCATransitionReveal; break; case 8: type = kCATransitionMoveIn; break; case 4: type = @"cube"; break; case 3: type = @"suckEffect"; break; case 1: type = @"pageCurl"; break; case 2: type = @"pageUnCurl"; break; default: break; } return type; } -(NSString *)getSubType{ NSString *subtype = nil; switch (self.typeID) { case 0: subtype = kCATransitionFromLeft; break; case 1: subtype = kCATransitionFromBottom; break; case 2: subtype = kCATransitionFromRight; break; case 3: subtype = kCATransitionFromTop; break; default: break; } self.typeID += 1; if (self.typeID > 3) { self.typeID = 0; } return subtype; } - (void)viewDidLoad { [super viewDidLoad]; [self.view setBackgroundColor:[UIColor whiteColor]]; [self.navigationItem setTitle:@"动画特效"]; UIButton *addBtn1 = [[UIButton alloc] initWithFrame:CGRectMake(10,70, 80, 30)]; [addBtn1 setTitle:@"翻页" forState:UIControlStateNormal]; addBtn1.titleLabel.font=[UIFont systemFontOfSize:13.0f]; [addBtn1 setBackgroundColor:[UIColor grayColor]]; addBtn1.tag=1; [addBtn1 addTarget:self action:@selector(animationFunction:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:addBtn1]; UIButton *addBtn2 = [[UIButton alloc] initWithFrame:CGRectMake(100,70, 80, 30)]; [addBtn2 setTitle:@"反翻页" forState:UIControlStateNormal]; addBtn2.titleLabel.font=[UIFont systemFontOfSize:13.0f]; [addBtn2 setBackgroundColor:[UIColor grayColor]]; addBtn2.tag=2; [addBtn2 addTarget:self action:@selector(animationFunction:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:addBtn2]; UIButton *addBtn3 = [[UIButton alloc] initWithFrame:CGRectMake(190,70, 80, 30)]; [addBtn3 setTitle:@"波纹" forState:UIControlStateNormal]; addBtn3.titleLabel.font=[UIFont systemFontOfSize:13.0f]; [addBtn3 setBackgroundColor:[UIColor grayColor]]; addBtn3.tag=3; [addBtn3 addTarget:self action:@selector(animationFunction:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:addBtn3]; UIButton *addBtn4 = [[UIButton alloc] initWithFrame:CGRectMake(280,70, 80, 30)]; [addBtn4 setTitle:@"立方体" forState:UIControlStateNormal]; addBtn4.titleLabel.font=[UIFont systemFontOfSize:13.0f]; [addBtn4 setBackgroundColor:[UIColor grayColor]]; addBtn4.tag=4; [addBtn4 addTarget:self action:@selector(animationFunction:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:addBtn4]; UIButton *addBtn5 = [[UIButton alloc] initWithFrame:CGRectMake(10,110, 80, 30)]; [addBtn5 setTitle:@"淡化" forState:UIControlStateNormal]; addBtn5.titleLabel.font=[UIFont systemFontOfSize:13.0f]; [addBtn5 setBackgroundColor:[UIColor grayColor]]; addBtn5.tag=5; [addBtn5 addTarget:self action:@selector(animationFunction:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:addBtn5]; UIButton *addBtn6 = [[UIButton alloc] initWithFrame:CGRectMake(100,110, 80, 30)]; [addBtn6 setTitle:@"推挤" forState:UIControlStateNormal]; addBtn6.titleLabel.font=[UIFont systemFontOfSize:13.0f]; [addBtn6 setBackgroundColor:[UIColor grayColor]]; addBtn6.tag=6; [addBtn6 addTarget:self action:@selector(animationFunction:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:addBtn6]; UIButton *addBtn7 = [[UIButton alloc] initWithFrame:CGRectMake(190,110, 80, 30)]; [addBtn7 setTitle:@"揭开" forState:UIControlStateNormal]; addBtn7.titleLabel.font=[UIFont systemFontOfSize:13.0f]; [addBtn7 setBackgroundColor:[UIColor grayColor]]; addBtn7.tag=7; [addBtn7 addTarget:self action:@selector(animationFunction:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:addBtn7]; UIButton *addBtn8 = [[UIButton alloc] initWithFrame:CGRectMake(280,110, 80, 30)]; [addBtn8 setTitle:@"覆盖" forState:UIControlStateNormal]; addBtn8.titleLabel.font=[UIFont systemFontOfSize:13.0f]; [addBtn8 setBackgroundColor:[UIColor grayColor]]; addBtn8.tag=8; [addBtn8 addTarget:self action:@selector(animationFunction:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:addBtn8]; UIButton *addBtn9 = [[UIButton alloc] initWithFrame:CGRectMake(10,150, 80, 30)]; [addBtn9 setTitle:@"上翻" forState:UIControlStateNormal]; addBtn9.titleLabel.font=[UIFont systemFontOfSize:13.0f]; [addBtn9 setBackgroundColor:[UIColor grayColor]]; addBtn9.tag=9; [addBtn9 addTarget:self action:@selector(animationFunction2:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:addBtn9]; UIButton *addBtn10 = [[UIButton alloc] initWithFrame:CGRectMake(100,150, 80, 30)]; [addBtn10 setTitle:@"下翻" forState:UIControlStateNormal]; addBtn10.titleLabel.font=[UIFont systemFontOfSize:13.0f]; [addBtn10 setBackgroundColor:[UIColor grayColor]]; addBtn10.tag=10; [addBtn10 addTarget:self action:@selector(animationFunction2:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:addBtn10]; UIButton *addBtn11 = [[UIButton alloc] initWithFrame:CGRectMake(190,150, 80, 30)]; [addBtn11 setTitle:@"左翻" forState:UIControlStateNormal]; addBtn11.titleLabel.font=[UIFont systemFontOfSize:13.0f]; [addBtn11 setBackgroundColor:[UIColor grayColor]]; addBtn11.tag=11; [addBtn11 addTarget:self action:@selector(animationFunction2:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:addBtn11]; UIButton *addBtn12 = [[UIButton alloc] initWithFrame:CGRectMake(280,150, 80, 30)]; [addBtn12 setTitle:@"右翻" forState:UIControlStateNormal]; addBtn12.titleLabel.font=[UIFont systemFontOfSize:13.0f]; [addBtn12 setBackgroundColor:[UIColor grayColor]]; addBtn12.tag=12; [addBtn12 addTarget:self action:@selector(animationFunction2:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:addBtn12]; _imageView = [[UIView alloc] initWithFrame:CGRectMake(0, 190, [UIScreen mainScreen].bounds.size.width, KS_HEIGTH-190)]; [self.view addSubview:_imageView]; blueView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"XXX_123.png"]]; blueView.frame=CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, KS_HEIGTH-150); [_imageView addSubview:blueView]; greenView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"XXX_321.png"]]; greenView.frame=CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, KS_HEIGTH-150); [_imageView addSubview:greenView]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } @end