• 图层的核心动画(CABaseAnimation)


    Main.storyboard

    //

    //  ViewController.m

    //  7A14.图层的核心动画

    //

    //  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.imageView.layer.bounds = CGRectMake(0, 0, 150, 150);

        //想要在根层执行动画,使用核心动画

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

        CABasicAnimation *animation = [CABasicAnimation animation];

    #warning 核心动画,只是一个假象,真实的大小是没有变化

        /*

         * 解决方案1:如果想控制的大小真实改变,要在动画结束设置控制的尺寸

         * 解决方案2:使动画保存执行之后的状态,默认动画执行完后,会返回原来的状态

         */

     

        //设置图形的属性来决定动画类型

        //bounds 图层尺寸动画

        animation.keyPath = @"bounds";

        //设置bounds尺寸变化后的大小

        animation.toValue = [NSValue valueWithCGRect:CGRectMake(0, 0, 150, 150)];

        //解决方案1:动画的代理

        //动画的代理

        animation.delegate = self;

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

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

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

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

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

     

    }

     

    -(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{

        self.imageView.bounds = CGRectMake(0, 0, 150, 150);

    }

     

     

    @end

    结果

  • 相关阅读:
    数据结构-栈与队列
    数据结构-选择排序
    数据结构-冒泡排序
    数据结构-插入排序
    mysql安装最后一步不响应解决
    ScvQ常用的网站(持续更新...)
    排序算法(二)
    排序算法(一)
    原码、反码、补码
    进制转换
  • 原文地址:https://www.cnblogs.com/Lu2015-10-03/p/5191226.html
Copyright © 2020-2023  润新知