核心动画01-CABasicAnimation

- (void)viewDidLoad {//创建layer对象
    [super viewDidLoad];

    CALayer *layer = [CALayer layer];

    layer.position = CGPointMake(100, 100);
    layer.bounds = CGRectMake(0, 0, 100, 100);
    layer.backgroundColor = [UIColor redColor].CGColor;
    [self.view.layer addSublayer:layer];
    self.layer = layer;
}

CABasicAnimation,基本动画,只能从fromValue改变到toValue,只能在两个值之间切换

一: 平移动画

- (void)testTranslate
{
    /**平移方法一:position**/
    //1、创建动画对象
    CABasicAnimation *anim = [CABasicAnimation animation];

    //2、设置动画对象
    //让图层动起来的本质是改变图层的某些属性
    //keyPath决定了执行怎样的动画,通过KVC的方式来执行动画的,keyPath告诉它调整哪个属性来执行动画,这个属性不可以乱写,要图层有这个属性才可以

    anim.keyPath = @"position";
    //    anim.fromValue = //没有设置的话,默认从当前位置开始
    //toValue:最终变成什么值
    //byValue:增加多少值
    anim.toValue = [NSValue valueWithCGPoint:CGPointMake(200, 300)];
//    anim.byValue = [NSValue valueWithCGPoint:CGPointMake(200, 300)];
    anim.duration = 2.0;

    //核心动画有一个缺点:会反弹,回到动画开始的初始位置
    /**让图层保存动画执行完毕后的状态**/
    //开发中直接拷贝,不需要记
    //两个属性可以取消核心动画的反弹效果
    //属性1:动画执行完毕之后不要删除动画
    anim.removedOnCompletion = NO; //当完成动画的时候,是否移除动画,默认是YES,表示移除
    //属性2:保存最新的状态
    anim.fillMode = kCAFillModeForwards; //以kCAFillMode开头,动画执行完的保存模式,Forwards表示前进,保持动画最新的状态

    //3、添加动画
    [self.layer addAnimation:anim forKey:nil];

    /**平移方法二:anchorPoint,改变锚点**/
//    anim.keyPath = @"anchorPoint";
//    anim.toValue = [NSValue valueWithCGPoint:CGPointMake(1, 1)];

    /**平移方法三:**/
//    anim.keyPath = @"transform.translation";
//    anim.toValue = [NSValue valueWithCGPoint:CGPointMake(100, 100)];
}

二:缩放

#pragma make 缩放
- (void)testScale
{
    //1、创建动画对象
    CABasicAnimation *anim = [CABasicAnimation animation];

    //2、设置动画对象
    //keyPath决定了执行怎样的动画

    anim.keyPath = @"bounds";
    //    anim.fromValue = //没有设置的话,默认从当前位置开始
    anim.toValue = [NSValue valueWithCGRect:CGRectMake(0, 0, 200, 200)];
    anim.duration = 2.0;

    /**让图层保存动画执行完毕后的状态**/
    anim.removedOnCompletion = NO;
    anim.fillMode = kCAFillModeForwards;

    //3、添加动画
    [self.layer addAnimation:anim forKey:nil];
}

三、TransForm三维旋转

- (void)testRotation3D
{
    //1、创建动画对象
    CABasicAnimation *anim = [CABasicAnimation animation];

    //2、设置动画对象
    //keyPath决定了执行怎样的动画

    anim.keyPath = @"transform";
    //    anim.fromValue = //没有设置的话,默认从当前位置开始
    anim.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI, 1, 1, 0)];//包装什么类型可以敲一下layer的这个属性是什么类型的
    anim.duration = 2.0;

    /**让图层保存动画执行完毕后的状态**/
    anim.removedOnCompletion = NO;
    anim.fillMode = kCAFillModeForwards;

    //3、添加动画
    [self.layer addAnimation:anim forKey:nil];
}

四、TransForm二维旋转

- (void)testRotation2D
{
    //1、创建动画对象
    CABasicAnimation *anim = [CABasicAnimation animation];

    //2、设置动画对象
    //keyPath决定了执行怎样的动画

    anim.keyPath = @"transform.rotation";

    //    anim.fromValue = //没有设置的话,默认从当前位置开始
    //查一下官方文档就知道传人什么值了,输入CATransform keyPath就可以了
    anim.toValue = @(M_PI);//包装什么类型可以敲一下layer的这个属性是什么类型的

//    //transform属性缩放,可以查文档看transform后面的属性
//    anim.keyPath = @"transform.scale";
//    anim.toValue = @(1.5);//不指定宽高的话表示,宽高一起缩放1.5倍

    anim.duration = 2.0;

    /**让图层保存动画执行完毕后的状态**/
    anim.removedOnCompletion = NO;
    anim.fillMode = kCAFillModeForwards;

    //3、添加动画
    [self.layer addAnimation:anim forKey:nil];

}
时间: 2025-02-01 02:51:42

核心动画01-CABasicAnimation的相关文章

猫猫学IOS(三十九)UI之核心动画之CABasicAnimation(基础动画)

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 一.CABasicAnimation简介 CAPropertyAnimation的子类 属性解析: fromValue:keyPath相应属性的初始值 toValue:keyPath相应属性的结束值 随着动画的进行,在长度为duration的持续时间内,keyPath相应属性的值从fromValue渐渐地变为toValue 如

coreAnimation核心动画(一)CABasicAnimation

2 1 // 2 // ViewController.m 3 // coreAnimation 4 // 5 // Created by ys on 15/11/21. 6 // Copyright (c) 2015年 ys. All rights reserved. 7 // 8 9 #import "ViewController.h" 10 11 @interface ViewController () 12 @property (nonatomic,strong)CALayer

ios(CoreAnimation核心动画 ) CABasicAnimation动画与锚点

一.position和anchorPoint position:用来设置CALayer在父层中的位置,以父层的左上角为原点(0, 0) anchorPoint(锚点): 称为“定位点”.“锚点” 决定着CALayer身上的哪个点会在position属性所指的位置 以自己的左上角为原点(0, 0) 它的x.y取值范围都是0~1,默认值为(0.5, 0.5) 推荐一个连接:http://www.cnblogs.com/wendingding/p/3800736.html讲的非常详细,而且有图视,默认

iOS开发——动画编程OC篇&(二)核心动画

核心动画 一.简单介绍 CAPropertyAnimation的子类 属性解析: fromValue:keyPath相应属性的初始值 toValue:keyPath相应属性的结束值 随着动画的进行,在长度为duration的持续时间内,keyPath相应属性的值从fromValue渐渐地变为toValue 如果fillMode=kCAFillModeForwards和removedOnComletion=NO,那么在动画执行完毕后,图层会保持显示动画执行后的状态.但在实质上,图层的属性值还是动画

iOS开发UI篇—核心动画(UIView封装动画)

一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画支持 执行动画所需要的工作由UIView类自动完成,但仍要在希望执行动画时通知视图,为此需要将改变属性的代码放在[UIView beginAnimations:nil context:nil]和[UIView commitAnimations]之间 常见方法解析: + (void)setAnimationDelegate:(id)delegate  

核心动画与UIView

UIView与核心动画区别?(掌握) 1.核心动画只作用在layer. 2.核心动画看到的都是假像,它并没有去修改UIView的真实位置. 什么时候使用核心动画? 1.当不需要与用户进行交互,使用核心动画 2.当要根据路径做动画时,使用核心动画:CABasicAnimation,CAKeyFrameAnimation,两个都可以根据绘制的路径UIBizerPath来绘制路径来执行动画 3.当做转场动画时, 使用核心动画 (核心动画转场类型比较多)CATrasition或是UIView的核心动画

ios开发核心动画七:核心动画与UIView动画的区别

/** UIView与核心动画区别?(掌握) 1.核心动画只作用在layer. 2.核心动画看到的都是假像,它并没有去修改UIView的真实位置. 什么时候使用核心动画? 1.当不需要与用户进行交互,使用核心动画 2.当要根据路径做动画时,使用核心动画:CABasicAnimation,CAKeyFrameAnimation,两个都可以根据绘制的路径UIBizerPath来绘制路径来执行动画 3.当做转场动画时, 使用核心动画 (核心动画转场类型比较多)CATrasition或是UIView的核

iOS开发UI篇—核心动画(基础动画)

iOS开发UI篇—核心动画(基础动画) 一.简单介绍 CAPropertyAnimation的子类 属性解析: fromValue:keyPath相应属性的初始值 toValue:keyPath相应属性的结束值 随着动画的进行,在长度为duration的持续时间内,keyPath相应属性的值从fromValue渐渐地变为toValue 如果fillMode=kCAFillModeForwards和removedOnComletion=NO,那么在动画执行完毕后,图层会保持显示动画执行后的状态.但

iOS_40_核心动画

核心动画之CATransition转场动画 终于效果图: 核心动画之CAKeyFrameAnimation,图标抖动效果 终于效果图: 核心动画之CAAnimationGroup(动画组) 终于效果图: 核心动画之CAKeyFrameAnimationGroup(关键帧动画) 终于效果图: 核心动画之CABasicAnimation(基本动画) 终于效果图: UIView封装的动画,NSObject已经遵守了CAAnimationDelegate 终于效果图: 核心动画之幸运转盘 终于效果图:

核心动画(UIView封装动画)

一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画支持 执行动画所需要的工作由UIView类自动完成,但仍要在希望执行动画时通知视图,为此需要将改变属性的代码放在[UIView beginAnimations:nil context:nil]和[UIView commitAnimations]之间 常见方法解析: + (void)setAnimationDelegate:(id)delegate