iOS学习笔记-076.核心动画02——CABasicAnimation(基本动画)

核心动画02——CABasicAnimation(基本动画)

一、简介

CABasicAnimation(基本动画),是 CAPropertyAnimation 的子类

属性说明:

fromValue:keyPath相应属性的初始值

toValue:  keyPath相应属性的结束值

动画过程说明:

随着动画的进行,在长度为duration的持续时间内,keyPath相应属性的值从fromValue渐渐地变为toValue

keyPath内容是CALayer的可动画Animatable属性

如果fillMode=kCAFillModeForwards同时removedOnComletion=NO,那么在动画执行完毕后,图层会保持显示动画执行后的状态。但在实质上,图层的属性值还是动画执行前的初始值,并没有真正被改变。

创建动画有两个方法可以使用


/* Creates a new animation object. */
+ (instancetype)animation;

/* Creates a new animation object with its `keyPath' property set to
 * 'path'. */
+ (instancetype)animationWithKeyPath:(nullable NSString *)path;

二、位移动画小例子

2.1 代码

//
//  ViewController.m
//  03_UIView68_CABasecAnimation
//
//  Created by 杞文明 on 17/6/13.
//  Copyright © 2017年 杞文明. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIView *redView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
}

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    //1.创建动画对象
    CABasicAnimation * anim = [CABasicAnimation animation];

    //2.设置属性值
    anim.keyPath = @"position.x";
    anim.toValue = @300;

    //动画完成时会自动删除动画
    anim.removedOnCompletion = NO;
    anim.fillMode = kCAFillModeForwards;

    //3.添加动画
    [self.redView.layer addAnimation:anim forKey:nil];
}
@end

2.2 图示

这里写图片描述


三、心跳效果小例子

3.1 代码

//
//  ViewController.m
//  03_UIView69_心跳效果
//
//  Created by 杞文明 on 17/6/14.
//  Copyright © 2017年 杞文明. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *heartView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
}

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
   // [self mode1Anima];
    [self mode2Anima];
}


//使用类方法 animation
-(void)mode1Anima{
    //创建动画对象
    CABasicAnimation *anim = [CABasicAnimation animation];

    //设置属性值
    anim.keyPath = @"transform.scale";
    anim.toValue = @0;

    //次数
    anim.repeatCount = MAXFLOAT;

    //时长
    anim.duration = 2;

    //自动反转(怎么样去 怎么样回来)
    anim.autoreverses = YES;

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

}

//使用类方法 CABasicAnimation animationWithKeyPath:
-(void)mode2Anima{
    CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"transform.scale"];

    anim.toValue = @0;
    anim.repeatCount = MAXFLOAT;
    anim.duration = 2;

    anim.autoreverses = YES;

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

@end

3.2 图示

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值