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

来源:互联网 发布:java调用db2存储过程 编辑:程序博客网 时间:2024/05/19 23:54

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 = [CABasicAnimationanimationWithKeyPath:@"transform.rotation.z"];

shakeAnimation.duration=duration;//动画持续时间

    shakeAnimation.fromValue=[NSNumbernumberWithFloat:-raid];//设定动画开始帧值

    shakeAnimation.toValue=[NSNumbernumberWithFloat: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.layeraddAnimation:shakeAnimation forKey:@"Let me shake"];//给动画指定任意名字


=============================================

 [self .layerremoveAnimationForKey:@"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"];


0 0
原创粉丝点击