1.storyboard中加载一个view
2.demo示例1
/**
(1)values属性
values属性指明整个动画过程中的关键帧点,需要注意的是,起点必须作为values的第一个值。
(2)path属性
作用与values属性一样,同样是用于指定整个动画所经过的路径的。需要注意的是,values与path是互斥的,当values与path同时指定时,path会覆盖values,即values属性将被忽略。
*/
- (void)testMove
{
// CABasicAnimation fromValue --> toValue
CAKeyframeAnimation *anim = [CAKeyframeAnimation animation];
//CAKeyframeAnimation 可以有两个属性来执行动画 keyPath 和 values 它可以在多个值之间变化,而CABasicAnimation 只能在两个值之间执行动画
//values与path是互斥的,当values与path同时指定时,path会覆盖values,即values属性将被忽略。
anim.keyPath = @"position";
NSValue *v1 = [NSValue valueWithCGPoint:CGPointZero];
NSValue *v2 = [NSValue valueWithCGPoint:CGPointMake(100, 0)];
NSValue *v3 = [NSValue valueWithCGPoint:CGPointMake(100, 200)];
NSValue *v4 = [NSValue valueWithCGPoint:CGPointMake(0, 200)];
anim.values = @[v1, v2, v3, v4];
// anim.path =
// anim.keyTimes = @[@(0.5), @(0.25), @(0.25)]; //每一帧用的时间
anim.duration = 2.0;//动画执行时间
anim.removedOnCompletion = NO; //执行动画后不要移除
anim.fillMode = kCAFillModeForwards; //保持最新
[self.redView.layer addAnimation:anim forKey:nil];
}
#pragma mark 动画的代理方法 动画开始的时候调用
- (void)animationDidStart:(CAAnimation *)anim
{
NSLog(@"animationDidStart");
}
#pragma mark 动画结束的时候调用
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
{
NSLog(@"animationDidStop");
}/**