CABasicAnimation类的使用方式就是基本的关键帧动画。
所谓关键帧动画,就是将Layer的属性作为KeyPath来注册,指定动画的起始帧和结束帧,然后自动计算和实现中间的过渡动画的一种动画方式。
1. CABaseAnimation通过制定 animationWithKeyPath:@“position”
值来实例话
//指定position属性
animationWithKeyPath的一些值:
transform.rotation.x =旋转x轴
transform.rotation.y =旋转y轴
transform.rotation.z = 平面圖的转换
transform.rotation 旋转角度
transform.scale = 比例转换
transform.scale.x = 宽的比例转换
transform.scale.y = 高的比例转化
transform.scale.z
transform.translation.x
transform.translation.y
transform.translation.z
transform.translation
CABasicAnimation * shakeAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
shakeAnimation.duration=duration;//动画持续时间
shakeAnimation.fromValue=[NSNumber numberWithFloat:-raid];//设定动画开始帧值
shakeAnimation.toValue=[NSNumber numberWithFloat:raid];//设定动画结束帧值
===========================================================================
//还可以这样设 设定动画起始帧和结束帧
animation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, 0)]; // 起始点
animation.toValue = [NSValue valueWithCGPoint:CGPointMake(320, 480)]; // 终了点
========================================================================
shakeAnimation.autoreverses=YES;//结束后是否执行逆动画
shakeAnimation.removedOnCompletion=NO;//动画接收后不返回初始状态
shakeAnimation.fillMode=kCAFillModeForwards;
if(count==0)
{
shakeAnimation.repeatCount=FLT_MAX;//重复次数设置为最大
}else
{
shakeAnimation.repeatCount=count;
}
//添加给视图 layer用于设置动画,修改视图圆角等。
[self.layer addAnimation:shakeAnimation forKey:@"Let me shake"];//给动画指定任意名字
=============================================
[self .layer removeAnimationForKey:@"Let me shake"];//移除动画指定的动画
移动动画
移动动画的代码如下:
/* 移动 */
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"];
// 动画选项的设定
animation.duration = 2.5; // 持续时间
animation.repeatCount = 1; // 重复次数
// 起始帧和终了帧的设定
animation.fromValue = [NSValue valueWithCGPoint:myView.layer.position]; // 起始帧
animation.toValue = [NSValue valueWithCGPoint:CGPointMake(320, 480)]; // 终了帧
// 添加动画
[myView.layer addAnimation:animation forKey:@"move-layer"];
旋转动画
旋转动画的代码如下:
/* 旋转 */
// 对Y轴进行旋转(指定Z轴的话,就和UIView的动画一样绕中心旋转)
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"];
// 设定动画选项
animation.duration = 2.5; // 持续时间
animation.repeatCount = 1; // 重复次数
// 设定选装角度
animation.fromValue = [NSNumber numberWithFloat:0.0]; // 起始角度
animation.toValue = [NSNumber numberWithFloat:2 * M_PI]; // 终止角度
// 添加动画
[myView.layer addAnimation:animation forKey:@"rotate-layer"];
缩放动画
缩放动画的代码如下:
/* 放大缩小 */
// 设定为缩放
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
// 动画选项设定
animation.duration = 2.5; // 动画持续时间
animation.repeatCount = 1; // 重复次数
animation.autoreverses = YES; // 动画结束时执行逆动画
// 缩放倍数
animation.fromValue = [NSNumber numberWithFloat:1.0]; // 开始时的倍率
animation.toValue = [NSNumber numberWithFloat:2.0]; // 结束时的倍率
// 添加动画
[myView.layer addAnimation:animation forKey:@"scale-layer"];
组合动画
使用CAAnimationGroup类进行复数动画的组合。代码如下:
/* 动画1(在X轴方向移动) */
CABasicAnimation *animation1 =
[CABasicAnimation animationWithKeyPath:@"transform.translation.x"];
// 终点设定
animation1.toValue = [NSNumber numberWithFloat:80];; // 終点
/* 动画2(绕Z轴中心旋转) */
CABasicAnimation *animation2 =
[CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
// 设定旋转角度
animation2.fromValue = [NSNumber numberWithFloat:0.0]; // 开始时的角度
animation2.toValue = [NSNumber numberWithFloat:4 * M_PI]; // 结束时的角度
/* 动画组 */
CAAnimationGroup *group = [CAAnimationGroup animation];
// 动画选项设定
group.duration = 3.0;
group.repeatCount = 1;
// 添加动画
group.animations = [NSArray arrayWithObjects:animation1, animation2, nil];
[myView.layer addAnimation:group forKey:@"move-rotate-layer"];