zoukankan      html  css  js  c++  java
  • CAKeyframeAnimation 关键帧动画

     1     UIBezierPath *path = [UIBezierPath bezierPath];
     2     [path moveToPoint:CGPointMake(-40, 100)];
     3     [path addLineToPoint:CGPointMake(360, 100)];
     4     [path addLineToPoint:CGPointMake(360, 200)];
     5     [path addLineToPoint:CGPointMake(-40, 200)];
     6     [path addLineToPoint:CGPointMake(-40, 300)];
     7     [path addLineToPoint:CGPointMake(360, 300)];
     8     
     9     CAKeyframeAnimation *moveAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
    10     moveAnimation.path = path.CGPath;
    11     moveAnimation.duration = 8.0f;
    12     moveAnimation.rotationMode = kCAAnimationRotateAuto;
    13     [shapeLayer addAnimation:moveAnimation forKey:@"moveAnimation"];
     1     CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
     2     
     3     CATransform3D scale1 = CATransform3DMakeScale(0.5, 0.5, 1);
     4     CATransform3D scale2 = CATransform3DMakeScale(1.2, 1.2, 1);
     5     CATransform3D scale3 = CATransform3DMakeScale(0.9, 0.9, 1);
     6     CATransform3D scale4 = CATransform3DMakeScale(1.0, 1.0, 1);
     7     
     8     NSArray *frameValues = [NSArray arrayWithObjects:
     9                             [NSValue valueWithCATransform3D:scale1],
    10                             [NSValue valueWithCATransform3D:scale2],
    11                             [NSValue valueWithCATransform3D:scale3],
    12                             [NSValue valueWithCATransform3D:scale4],
    13                             nil];
    14     
    15     [animation setValues:frameValues];
    16     
    17     NSArray *frameTimes = [NSArray arrayWithObjects:
    18                            [NSNumber numberWithFloat:0.0],
    19                            [NSNumber numberWithFloat:0.5],
    20                            [NSNumber numberWithFloat:0.9],
    21                            [NSNumber numberWithFloat:1.0],
    22                            nil];
    23     [animation setKeyTimes:frameTimes];
    24     
    25     animation.fillMode = kCAFillModeForwards;
    26     animation.duration = .25;
    27     
    28     [self addAnimation:animation forKey:@"DSPopUpAnimation"];

    基于路径的关键帧动画

     1     CGMutablePathRef path = CGPathCreateMutable();
     2     
     3     CGPathMoveToPoint(path, NULL, 50.0, 120.0);
     4     CGPathAddCurveToPoint(path, NULL, 50.0, 275.0, 150.0, 275.0, 150.0, 120.0);
     5     CGPathAddCurveToPoint(path,NULL,150.0,275.0,250.0,275.0,250.0,120.0);
     6     CGPathAddCurveToPoint(path,NULL,250.0,275.0,350.0,275.0,350.0,120.0);
     7     CGPathAddCurveToPoint(path,NULL,350.0,275.0,450.0,275.0,450.0,120.0);
     8     
     9     CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"position"];
    10     [anim setPath:path];
    11     [anim setDuration:3.0];
    12     [anim setAutoreverses:YES];
    13     CFRelease(path);
    14     [self.layer addAnimation:anim forKey:@"path"];

    基于位置点的关键桢动画

     1     CGPoint pt0 = CGPointMake(50.0, 120.0);
     2     CGPoint pt1 = CGPointMake(50.0, 275.0);
     3     CGPoint pt2 = CGPointMake(150.0, 275.0);
     4     CGPoint pt3 = CGPointMake(150.0, 120.0);
     5     CGPoint pt4 = CGPointMake(150.0, 275.0);
     6     CGPoint pt5 = CGPointMake(250.0, 275.0);
     7     CGPoint pt6 = CGPointMake(250.0, 120.0);
     8     CGPoint pt7 = CGPointMake(250.0, 275.0);
     9     CGPoint pt8 = CGPointMake(350.0, 275.0);
    10     CGPoint pt9 = CGPointMake(350.0, 120.0);
    11     CGPoint pt10 = CGPointMake(350.0, 275.0);
    12     CGPoint pt11 = CGPointMake(450.0, 275.0);
    13     CGPoint pt12 = CGPointMake(450.0, 120.0);
    14     NSArray *values = [NSArray arrayWithObjects:
    15                        [NSValue valueWithCGPoint:pt0],
    16                        [NSValue valueWithCGPoint:pt1],
    17                        [NSValue valueWithCGPoint:pt2],
    18                        [NSValue valueWithCGPoint:pt3],
    19                        [NSValue valueWithCGPoint:pt4],
    20                        [NSValue valueWithCGPoint:pt5],
    21                        [NSValue valueWithCGPoint:pt6],
    22                        [NSValue valueWithCGPoint:pt7],
    23                        [NSValue valueWithCGPoint:pt8],
    24                        [NSValue valueWithCGPoint:pt9],
    25                        [NSValue valueWithCGPoint:pt10],
    26                        [NSValue valueWithCGPoint:pt11],
    27                        [NSValue valueWithCGPoint:pt12], nil];
    28     CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"position"];
    29     [anim setValues:values];
    30     [anim setDuration:3.0];
    31     [anim setAutoreverses:YES];
    32     
    33     [self.layer addAnimation:anim forKey:@"path"];

    旋转180度

     1    CAKeyframeAnimation *keyAnim = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
     2             CATransform3D rotation1 = CATransform3DMakeRotation(30 * M_PI/180, 0, 0, -1);
     3             CATransform3D rotation2 = CATransform3DMakeRotation(60 * M_PI/180, 0, 0, -1);
     4             CATransform3D rotation3 = CATransform3DMakeRotation(90 * M_PI/180, 0, 0, -1);
     5             CATransform3D rotation4 = CATransform3DMakeRotation(120 * M_PI/180, 0, 0, -1);
     6             CATransform3D rotation5 = CATransform3DMakeRotation(150 * M_PI/180, 0, 0, -1);
     7             CATransform3D rotation6 = CATransform3DMakeRotation(180 * M_PI/180, 0, 0, -1);
     8             
     9             [keyAnim setValues:[NSArray arrayWithObjects:
    10                                 [NSValue valueWithCATransform3D:rotation1],
    11                                 [NSValue valueWithCATransform3D:rotation2],
    12                                 [NSValue valueWithCATransform3D:rotation3],
    13                                 [NSValue valueWithCATransform3D:rotation4],
    14                                 [NSValue valueWithCATransform3D:rotation5],
    15                                 [NSValue valueWithCATransform3D:rotation6],
    16                                 nil]];
    17             [keyAnim setKeyTimes:[NSArray arrayWithObjects:
    18                                   [NSNumber numberWithFloat:0.0],
    19                                   [NSNumber numberWithFloat:0.2f],
    20                                   [NSNumber numberWithFloat:0.4f],
    21                                   [NSNumber numberWithFloat:0.6f],
    22                                   [NSNumber numberWithFloat:0.8f],
    23                                   [NSNumber numberWithFloat:1.0f],
    24                                   nil]];
    25             [keyAnim setDuration:4];
    26             [keyAnim setFillMode:kCAFillModeForwards];
    27             [keyAnim setRemovedOnCompletion:NO];
    28             [zhiZhenLayer addAnimation:keyAnim forKey:nil];
  • 相关阅读:
    poj 3068 Bridge Across Islands
    XidianOJ 1086 Flappy v8
    XidianOJ 1036 分配宝藏
    XidianOJ 1090 爬树的V8
    XidianOJ 1088 AK后的V8
    XidianOJ 1062 Black King Bar
    XidianOJ 1091 看Dota视频的V8
    XidianOJ 1098 突击数论前的xry111
    XidianOJ 1019 自然数的秘密
    XidianOJ 1109 Too Naive
  • 原文地址:https://www.cnblogs.com/sell/p/2909168.html
Copyright © 2011-2022 走看看