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];