zoukankan      html  css  js  c++  java
  • IOS开发核心动画六:动画组

    #import "ViewController.h"
    
    @interface ViewController ()
    @property (weak, nonatomic) IBOutlet UIView *redView;
    
    @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 {
        
        CABasicAnimation *anim = [CABasicAnimation animation];
        anim.keyPath = @"position.y";
        anim.toValue = @400;
        
        /**
         *  1:CABasicAnimation:主要用于缩放,平移,转场CATransiton动画主要用于场景切换,CAKeyFrameAnimation:关键帧动画,主要用于图标抖动等
           2:在CABasicAnimation中,设置anim.removedOnCompletion,目的是动画结束后不删除动画,anim.fillMode = kCAFillModeForwards;设置动画的模式,设置这两个属性,可以不让动画执行结束后,恢复到原来的位置,而是保留结束动画的状态
           3:CAAnimationGroup:她会自动执行数组animations里的动画
         
         */
        
        
        
        
    //    anim.removedOnCompletion = NO;
    //    anim.fillMode = kCAFillModeForwards;
    //    
    //    [self.redView.layer addAnimation:anim forKey:nil];
        
        
        CABasicAnimation *anim2 = [CABasicAnimation animation];
        anim2.keyPath = @"transform.scale";
        anim2.toValue = @0.5;
    //    anim2.removedOnCompletion = NO;
    //    anim2.fillMode = kCAFillModeForwards;
    //    [self.redView.layer addAnimation:anim2 forKey:nil];
        
    
        CAAnimationGroup *group = [CAAnimationGroup animation];
        //会自动执行animations数组当中所有的动画对象
        group.animations = @[anim,anim2];
        
        group.removedOnCompletion = NO;
        group.fillMode = kCAFillModeForwards;
        [self.redView.layer addAnimation:group forKey:nil];
        
    }
    
    
    
    @end

    可以同时执行多个动画.

    创建组动画

        CAAnimationGroup *group = [CAAnimationGroup animation];

        

        平移

        CABasicAnimation *anim = [CABasicAnimation animation];

        anim.keyPath = @"position.y";

        anim.toValue = @400;

        

        缩放

        CABasicAnimation *scaleAnim = [CABasicAnimation  animation];

        scaleAnim.keyPath = @"transform.scale";

        scaleAnim.toValue = @0.5;

        设置动画组属性

        group.animations = @[anim,scaleAnim];

        

        group.removedOnCompletion = NO;

        group.fillMode = kCAFillModeForwards;

        添加组动画

        [self.redView.layer addAnimation:group forKey:nil];

    使用动画组的好处,不需要每次都去添加动画,设置动画完成时的属性.

    只需要把要执行的动画,添加到动画组的animations数组当中即可,

    最后把组动画添加到层上面,就会自动执行数组当中的动画.

    动画完成时设置的属性也只需要设置一次.

  • 相关阅读:
    Linux下Tomcat启动、停止、重新启动
    Linux安装Tomcat
    CentOS7防火墙firewalld 和 CentOS6防火墙iptables的一些配置命令
    Zabbix监控报警Lack of free swap space on Zabbix server解决办法
    CentOS7 防火墙firewalld 和 CentOS6 防火墙iptables 开放zabbix-agent端口的方法
    yii2安装配置完成后,网页打开报错yiiwebRequest::cookieValidationKey must be configured with a secret key
    CentOS 7 使用unzip解压zip文件提示未找到命令的解决方法
    docker安装脚本
    hadoop常用命令
    yum常用安装包
  • 原文地址:https://www.cnblogs.com/cqb-learner/p/5840691.html
Copyright © 2011-2022 走看看