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