iOS学习笔记(10)上 CABasicAnimation类使用

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"];


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值