翻页动画效果

 1 typedef enum : NSUInteger {
 2     Fade = 1,                   //淡入淡出
 3     Push,                       //推挤
 4     Reveal,                     //揭开
 5     MoveIn,                     //覆盖
 6     Cube,                       //立方体
 7     SuckEffect,                 //吮吸
 8     OglFlip,                    //翻转
 9     RippleEffect,               //波纹
10     PageCurl,                   //翻页
11     PageUnCurl,                 //反翻页
12     CameraIrisHollowOpen,       //开镜头
13     CameraIrisHollowClose,      //关镜头
14     CurlDown,                   //下翻页
15     CurlUp,                     //上翻页
16     FlipFromLeft,               //左翻转
17     FlipFromRight,              //右翻转
18     
19 } AnimationType;
  1 - (IBAction)tapButton:(id)sender {
  2  
  3     UIButton * button = sender;
  4     AnimationType animationType = button.tag;
  5     
  6     NSString * subtypeString;
  7     
  8     switch (_subtype) {
  9         case 0:
 10             subtypeString = kCATransitionFromLeft;
 11             break;
 12         case 1:
 13             subtypeString = kCATransitionFromBottom;
 14             break;
 15         case 2:
 16             subtypeString = kCATransitionFromRight;
 17             break;
 18         case 3:
 19             subtypeString = kCATransitionFromTop;
 20             break;
 21         default:
 22             break;
 23     }
 24     
 25     _subtype += 1;
 26     if (_subtype > 3) {
 27         _subtype = 0;
 28     }
 29 
 30     
 31     switch (animationType) {
 32         case Fade:
 33             [self transitionWithType:kCATransitionFade WithSubtype:subtypeString ForView:self.view];
 34             break;
 35         
 36         case Push:
 37             [self transitionWithType:kCATransitionPush WithSubtype:subtypeString ForView:self.view];
 38             break;
 39             
 40         case Reveal:
 41             [self transitionWithType:kCATransitionReveal WithSubtype:subtypeString ForView:self.view];
 42             break;
 43             
 44         case MoveIn:
 45             [self transitionWithType:kCATransitionMoveIn WithSubtype:subtypeString ForView:self.view];
 46             break;
 47             
 48         case Cube:
 49             [self transitionWithType:@"cube" WithSubtype:subtypeString ForView:self.view];
 50             break;
 51         
 52         case SuckEffect:
 53             [self transitionWithType:@"suckEffect" WithSubtype:subtypeString ForView:self.view];
 54             break;
 55             
 56         case OglFlip:
 57             [self transitionWithType:@"oglFlip" WithSubtype:subtypeString ForView:self.view];
 58             break;
 59             
 60         case RippleEffect:
 61             [self transitionWithType:@"rippleEffect" WithSubtype:subtypeString ForView:self.view];
 62             break;
 63             
 64         case PageCurl:
 65             [self transitionWithType:@"pageCurl" WithSubtype:subtypeString ForView:self.view];
 66             break;
 67             
 68         case PageUnCurl:
 69             [self transitionWithType:@"pageUnCurl" WithSubtype:subtypeString ForView:self.view];
 70             break;
 71             
 72         case CameraIrisHollowOpen:
 73             [self transitionWithType:@"cameraIrisHollowOpen" WithSubtype:subtypeString ForView:self.view];
 74             break;
 75             
 76         case CameraIrisHollowClose:
 77             [self transitionWithType:@"cameraIrisHollowClose" WithSubtype:subtypeString ForView:self.view];
 78             break;
 79         
 80         case CurlDown:
 81             [self animationWithView:self.view WithAnimationTransition:UIViewAnimationTransitionCurlDown];
 82             break;
 83         
 84         case CurlUp:
 85             [self animationWithView:self.view WithAnimationTransition:UIViewAnimationTransitionCurlUp];
 86             break;
 87             
 88         case FlipFromLeft:
 89             [self animationWithView:self.view WithAnimationTransition:UIViewAnimationTransitionFlipFromLeft];
 90             break;
 91             
 92         case FlipFromRight:
 93             [self animationWithView:self.view WithAnimationTransition:UIViewAnimationTransitionFlipFromRight];
 94             break;
 95 
 96         default:
 97             break;
 98     }
 99     
100     static int i = 0;
101     if (i == 0) {
102         [self addBgImageWithImageName:IMAGE1];
103         i = 1;
104     }
105     else
106     {
107         [self addBgImageWithImageName:IMAGE2];
108         i = 0;
109     }
110     
111 }
 1 #pragma CATransition动画实现
 2 - (void) transitionWithType:(NSString *)type WithSubtype:(NSString *) subtype ForView : (UIView *) view
 3 {
 4     //创建CATransition对象
 5     CATransition * animation = [CATransition animation];
 6     
 7     //设置运动时间
 8     animation.duration = DURATION;
 9     
10     //设置运动type
11     animation.type = type;
12     if (subtype != nil) {
13         //设置子类
14         animation.subtype = subtype;
15     }
16     
17     //设置运动速度
18     animation.timingFunction = UIViewAnimationOptionCurveEaseInOut;
19     
20     [view.layer addAnimation:animation forKey:@"animation"];
21 }
22 
23 
24 
25 #pragma UIView实现动画
26 - (void) animationWithView:(UIView *)view WithAnimationTransition : (UIViewAnimationTransition) transition
27 {
28     [UIView animateWithDuration:DURATION animations:^{
29         [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
30         [UIView setAnimationTransition:transition forView:view cache:YES];
31     }];
32 }
原文地址:https://www.cnblogs.com/fengmin/p/5391054.html