• 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数组当中即可,

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

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

  • 相关阅读:
    微信机器人-定制消息
    Python实现微信祝福语自动发送
    日常使用 ADB 命令
    python 中的三种等待方式
    Appium自动化测试之环境安装
    Charles 模拟弱网
    Navicat连接MySQL报错-2059
    requests高级用法
    requests基本用法
    Monkey测试环境搭建
  • 原文地址:https://www.cnblogs.com/cqb-learner/p/5840691.html
Copyright © 2020-2023  润新知