• ios开发之核心动画四:核心动画-Core Animation--CABasicAnimation基础核心动画


    #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 {
        
        //1.创建动画对象(设置layer的属性值.)
        CABasicAnimation *anim = [CABasicAnimation animation];
        //2.设置属性值
        anim.keyPath = @"position.x";
        anim.toValue = @300;
        
        //动画完成时, 会自动删除动画
        anim.removedOnCompletion = NO;
        anim.fillMode = @"forwards";
        
        //3.添加动画:key值是为了区分不同的动画
        [self.redView.layer addAnimation:anim forKey:nil];
        
    }

    核心动画之作用在层上面.

    动画的本质是改图层的某一个属性.

    CABasicAnimation *anim = [CABasicAnimation animation];

    图层有那些属性,这里才能写那些属性.

    anim.keyPath = @"transform.scale";

    anim.toValue = @0.5;

    告诉动画完成的时候不要移除

    anim.removedOnCompletion = NO;

    保存动画最前面的效果.也就是最后一个设置的效果

    anim.fillMode = kCAFillModeForwards;

    把动画添加到层上面.

    [_redView.layer addAnimation:anim forKey:nil];

    二:心跳效果

    #import "ViewController.h"
    
    @interface ViewController ()
    @property (weak, nonatomic) IBOutlet UIImageView *imageV;
    
    @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 = @"transform.scale";
        anim.toValue = @0;
    
        //设置动画执行次数
        anim.repeatCount = MAXFLOAT;
        
        //设置动画执行时长
        anim.duration = 3;
        
        //自动反转(怎么样去 怎么样回来)
        anim.autoreverses = YES;
        
        //添加动画
        [self.imageV.layer addAnimation:anim forKey:nil];
        
        
    }
    
    
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    @end

    思路:就是让一张图片做一个放大缩放小的动画.

    代码实现:

     

        CABasicAnimation *anim =[CABasicAnimation  animation];

        设置缩放属性

        anim.keyPath = @"transform.scale";

        缩放到最小

        anim.toValue = @0;

        设置动画执行的次数

        anim.repeatCount = MAXFLOAT;

        设置动画执行的时长

        anim.duration = 0.25;

        设置动画自动反转(怎么去, 怎么回)

        anim.autoreverses = YES;

        添加动画

        [self.heartView.layer addAnimation:anim forKey:nil];

  • 相关阅读:
    2015北京网络赛 Couple Trees 倍增算法
    POJ 1330 Nearest Common Ancestors 倍增算法的LCA
    2015北京网络赛 G Boxes BFS+打表
    Codeforces Round#320 Div2 解题报告
    HDU 5446 Unknown Treasure Lucas+中国剩余定理+按位乘
    codeforces #329 div 2 B. Anton and Lines(几何)
    codeforces #329 div 2 A. 2Char (暴力)
    hdu 1394 Minimum Inversion Number (树状数组 逆序对)
    hdu 1754 I Hate It (线段树)
    codeforces 589 G
  • 原文地址:https://www.cnblogs.com/cqb-learner/p/5839537.html
Copyright © 2020-2023  润新知