• 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];
  • 相关阅读:
    js 经纬度计算直线距离
    lua 把图片转换成base64
    js 选中div中的文本
    .net EasyTree显示所级层级(无限级、整层级颗树)的另类写法。非递归
    c# windows服务 一个项目安装多个服务
    MD5 .net与PHP加密值一样的加密代码
    mvc 目录不存在/Directory does not exist.的解决方案
    .net webapi项目中支持session
    .net 中HttpClient 携带cookie传输
    iis虚拟目录或应用程序不继承父站点的web.config配置信息
  • 原文地址:https://www.cnblogs.com/sell/p/2909168.html
Copyright © 2020-2023  润新知