源码下载地址:http://download.csdn.net/detail/liu537192/8558383
效果图:
核心代码:
//
// JLViewController.m
// 09-核心动画
//
// Created by XinYou on 15-4-2.
// Copyright (c) 2015年 vxinyou. All rights reserved.
//
#import "JLViewController.h"
@interface JLViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *iconView;
- (IBAction)multiPosition;
- (IBAction)surroundCircle;
- (IBAction)back;
@end
@implementation JLViewController
- (void)viewDidLoad
{
[super viewDidLoad];
}
/**
* 平移到多个不同的位置
*/
- (IBAction)multiPosition {
// 1,创建动画
CAKeyframeAnimation *anim = [CAKeyframeAnimation animation];
// 2,设置动画对象
// 设置CALayer要修改的属性
anim.keyPath = @"position";
NSValue *v1 = [NSValue valueWithCGPoint:CGPointMake(160, 90)];
NSValue *v2 = [NSValue valueWithCGPoint:CGPointMake(160, 190)];
NSValue *v3 = [NSValue valueWithCGPoint:CGPointMake(260, 190)];
NSValue *v4 = [NSValue valueWithCGPoint:CGPointMake(260, 90)];
// 设置position属性的每一帧要改变的值
anim.values = @[v1, v2, v3, v4];
// 设置动画持续时间
anim.duration = 2.0;
// 保持动画执行完毕后的状态
anim.removedOnCompletion = NO;
anim.fillMode = kCAFillModeForwards;
// 3,添加动画
[self.iconView.layer addAnimation:anim forKey:nil];
}
/**
* 绕圆平移
*/
- (IBAction)surroundCircle {
// 1,创建动画
CAKeyframeAnimation *anim = [CAKeyframeAnimation animation];
// 2,设置动画对象
anim.keyPath = @"position";
anim.removedOnCompletion = NO;
anim.fillMode = kCAFillModeForwards;
anim.duration = 2.0;
// 创建路径
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddEllipseInRect(path, NULL, CGRectMake(90, 90, 100, 100));
// 设置路径
anim.path = path;
CGPathRelease(path);
// 3,添加动画
[self.iconView.layer addAnimation:anim forKey:nil];
}
/**
* 还原
*/
- (IBAction)back {
[self.iconView.layer removeAllAnimations];
}
@end