基础动画(二)

代码如下:

#import "ViewController.h"


@interface ViewController ()

@property (weak, nonatomic) IBOutlet UIView *redView;


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

}


- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

    //[self transformOneByOne];

    [self transformBycircle];

    

}


-(void)transformOneByOne{

    CAKeyframeAnimation *kfAnimation = [CAKeyframeAnimation animation];

    kfAnimation.keyPath = @"position";

    

    //指定几个帧让该让layer去走

    NSValue *v1 = ([NSValue valueWithCGPoint:CGPointMake(0, 100)]);

    NSValue *v2 = ([NSValue valueWithCGPoint:CGPointMake(200, 50)]);

    NSValue *v3 = ([NSValue valueWithCGPoint:CGPointMake(30, 100)]);

    NSValue *v4 = ([NSValue valueWithCGPoint:CGPointMake(300, 300)]);

    

    //数组里面不能放结构体  所以要放的话 要包装一下类型再放

    kfAnimation.values = @[v1, v2, v3 , v4];

    

    //自己调整每个帧的时间

    //kfAnimation.keyTimes = @[@(0.5), @(0.25), @(0.25)];

    

    kfAnimation.duration = 2.0;

    [self.redView.layer addAnimation:kfAnimation forKey:nil];

    kfAnimation.removedOnCompletion = NO;

    kfAnimation.fillMode = kCAFillModeForwards;



}


-(void)transformBycircle{

    CAKeyframeAnimation *kfAnimation = [CAKeyframeAnimation animation];

    kfAnimation.keyPath = @"position";

    

    //设置动画执行节奏

    kfAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];//速度的控制

    

    kfAnimation.duration = 2.0;

    //指定一个路径

    CGMutablePathRef path = CGPathCreateMutable();

    

    //根据路径创造一个圆

    CGPathAddEllipseInRect(path, nil, CGRectMake(100, 100, 100, 100));

    

    kfAnimation.path = path;

    

    //只有给这个动画对象设置代理,才能调用动画的代理方法

    kfAnimation.delegate = self;

    

    [self.redView.layer addAnimation:kfAnimation forKey:nil];

    kfAnimation.removedOnCompletion = NO;

    kfAnimation.fillMode = kCAFillModeForwards;

    

    CGPathRelease(path);


}


/**

 *动画开始的代理方法

 *

 ****/

-(void)animationDidStart:(CAAnimation *)anim{

    NSLog(@"开始动画");

}


/**

 *动画结束的代理方法

 *

 ****/

-(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{

    NSLog(@"结束动画");

}

@end


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值