关键帧动画

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

{

/*------让黄色视图移动三角形------*/

/**

*动画只是一个效果,并不会影响到视图本身的位置

* 1.在动画结束后,手动的移动视图的位置(动画代理)

* 2.了解:利用fillMode配合removeOnCompletion使用

*动画效果在使用完成后,默认是会被移除的

*当界面消失(按下Home键,或者是scrollView的内容被拖走了,看不到),动画是会被移除的

*将removeOnCompletion设置为NO,当动画完成了,也不会将它移除

*/

//实例化一个关键帧动画,绑定了要操作的属性

//使用transform.translation ,写错是不会崩溃,但没有动画效果

//使用Layer的position属性,也可以实现位移效果

CAKeyframeAnimation*animation = [CAKeyframeAnimationanimationWithKeyPath:@"position"];

// NSObject已经遵守了协议,代理方法直接从父类继承过来,直接重写即可

//    animation.delegate = self;

NSValue*value1 = [NSValuevalueWithCGPoint:CGPointMake(100,100)];

NSValue*value2 = [NSValuevalueWithCGPoint:CGPointMake(300,100)];

NSValue*value3 = [NSValuevalueWithCGPoint:CGPointMake(100,300)];

//关键帧数组,三角形的三个点(需要包装一下)

animation.values=@[value1, value2, value3, value1];

//配置其它的参数

animation.duration=2.0;

//无限重复

//    animation.repeatCount = MAXFLOAT;

//动画完成后是否被移除,默认是被会移除

animation.removedOnCompletion=NO;

//计算模式(根据duration来计算每个value,产生动画的效果)

// kCAAnimationLinear是默认,线性的计算

// kCAAnimationDiscrete不连续的动画效果

animation.calculationMode=kCAAnimationCubic;

//了解:填充模式, kCAFillModeForwards要配置动画移除

animation.fillMode=kCAFillModeForwards;

[_yellowView.layeraddAnimation:animationforKey:nil];

}

你可能感兴趣的:(关键帧动画)