• 图层的核心动画(CABaseAnimation)续


    Main.storyboard

    ViewController.m

    //

    //  ViewController.m

    //  8A01.核心动画

    //

    //  Created by huan on 16/2/4.

    //  Copyright © 2016 huanxi. All rights reserved.

    //

     

    #import "ViewController.h"

     

    @interface ViewController ()

    @property (weak, nonatomic) IBOutlet UIImageView *imageView;

     

    @end

     

    @implementation ViewController

     

    - (void)viewDidLoad {

        [super viewDidLoad];

        // Do any additional setup after loading the view, typically from a nib.

    }

     

    -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

    //    [self testPositionAnimation];

    //    [self testTransformAnimation];//形变属性:平移

    //    [self testTransformRotationAnimation];

        [self testTransformScaleAnimation];

    }

     

    #pragma mark 测试位置的动画

    -(void)testPositionAnimation{

        //核心动画使用步骤

        //1.创建一个动画对象

        CABasicAnimation *animation = [CABasicAnimation animation];

        //设置动画类型

        animation.keyPath = @"position";

        //动画执行的初始状态

    //    animation.fromValue = [NSValue valueWithCGPoint:CGPointMake(100, 100)];

        //动画执行的"最终状态"

    //    animation.toValue = [NSValue valueWithCGPoint:CGPointMake(100, 250)];

        

        //每次动画执行的增加值

        animation.byValue = [NSValue valueWithCGPoint:CGPointMake(10, 10)];

        

        //保存动画执行状态

        //解决方案2:使动画保存执行之后的状态,只要设置动画的两个属性

        animation.removedOnCompletion = NO;// 动画对象不要移除

        animation.fillMode = kCAFillModeForwards;//保存当前的状态

        //2.往控件的图层添加动画

        [self.imageView.layer addAnimation:animation forKey:nil];

        

    }

    #pragma mark 测试形变的平移动画

    -(void)testTransformAnimation{

        //1.创建一个动画对象

        CABasicAnimation *animation = [CABasicAnimation animation];

        //设置动画类型

    //    animation.keyPath = @"transform.translation";

        animation.keyPath = @"transform.translation.x";

        

        //每次动画执行的增加值

    //    animation.byValue = [NSValue valueWithCGPoint:CGPointMake(10, 10)];

        //byValue的数据类型是 keypath 决定的

        animation.byValue = @10;

        

        //保存动画执行状态

        //解决方案2:使动画保存执行之后的状态,只要设置动画的两个属性

        animation.removedOnCompletion = NO;// 动画对象不要移除

        animation.fillMode = kCAFillModeForwards;//保存当前的状态

        //2.往控件的图层添加动画

        [self.imageView.layer addAnimation:animation forKey:nil];

     

    }

     

    #pragma mark 测试形变的旋转的动画

    -(void)testTransformRotationAnimation{

        //1.创建一个动画对象

        CABasicAnimation *animation = [CABasicAnimation animation];

        //设置动画类型

        

        animation.keyPath = @"transform.rotation.x";

        

       

        //byValue的数据类型是 keypath 决定的

        animation.byValue = @(M_PI_4);

        

        //保存动画执行状态

        //解决方案2:使动画保存执行之后的状态,只要设置动画的两个属性

        animation.removedOnCompletion = NO;// 动画对象不要移除

        animation.fillMode = kCAFillModeForwards;//保存当前的状态

        //2.往控件的图层添加动画

        [self.imageView.layer addAnimation:animation forKey:nil];

     

    }

     

    #pragma mark 测试形变的缩放的动画

    -(void)testTransformScaleAnimation{

        //1.创建一个动画对象

        CABasicAnimation *animation = [CABasicAnimation animation];

        //设置动画类型 ==>>keyPath 设置图层的属性 bounds/position/transform

        //    animation.keyPath = @"transform.translation";

    //    animation.keyPath = @"transform.scale";

        animation.keyPath = @"transform.scale.x";

        

        //设置动画的时间

        animation.duration = 3;

        //byValue的数据类型是 keypath 决定的

        animation.byValue = @1.5;

        

        //保存动画执行状态

        //解决方案2:使动画保存执行之后的状态,只要设置动画的两个属性

        animation.removedOnCompletion = NO;// 动画对象不要移除

        animation.fillMode = kCAFillModeForwards;//保存当前的状态

        //2.往控件的图层添加动画

        [self.imageView.layer addAnimation:animation forKey:nil];

     

    }

     

    @end

    结果

  • 相关阅读:
    微信公众号开发(二)用户关注
    搭建git服务器
    微信公众号开发(三)生成带参数的二维码
    windows 安装多个mysql
    微信公众号开发(一)前期 配置
    支付宝接口之条码支付
    mysql8.0 安装 修改密码 允许远程连接
    区块链开发金融交易平台
    区块链开发 在金融融资交易平台中的优势
    2019年区块链金融交易所钱包开发需要多少钱
  • 原文地址:https://www.cnblogs.com/Lu2015-10-03/p/5191319.html
Copyright © 2020-2023  润新知