核心动画——弹簧动画一

弹簧动画

弹簧动画:CASpringAnimation->CABasicAnimation(基础动画)->CAPropertyAnimation(属性动画)->CAAnimation(核心动画)

下面就是核心动画的结构图:

基础动画:CABasicAnimation->只能设置fromValue、toValue、byValue 所以CASpringAnimation(弹簧动画)也只能设置fromValue、toValue、byValue

属性介绍:

    ①mass 质量->影响图层运动时的弹簧惯性 质量越大 幅度越大

    ②stiffness 刚度(劲度/弹性) 刚度越大 形变产生的力就越大 运动越快

    ③damping 阻力 阻力越大 停止越快

    ④initialVelocity 初始速率,动画视图的初始速度大小 速率为正数时 速度方向与运动方向一致 速率为负数时 速度方向与运动方向相反

    ⑤settlingDuration 获得动画完成的预估时间

 以上就是对弹簧动画的介绍,具体操作就看下面的代码:

首先在Main.storyboard文件里面创建一个UIImageView,设置image、Mode属性,ViewController继承于ViewController。将UIImageView设置为一个属性,选中UIImageView右击不放手拖到ViewController.m文件的@interface 里面并给它起名。

在ViewController.m文件

#import "ViewController.h"

@interface ViewController ()

@property (weak, nonatomic) IBOutlet UIImageView *anmitionView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor whiteColor];
    
}

- (void)movie:(CGPoint)position{
    /*
     CASpringAnimation 弹簧动画
     animationWithKeyPath: 初始化
     addAnimation: forKey:添加到视图上的方法
     */
    CASpringAnimation *anmiation = [CASpringAnimation animationWithKeyPath:@"position"];
    //CGPoint->id CGpoint->NAValue
    anmiation.fromValue = [NSValue valueWithCGPoint:self.anmitionView.center];
    anmiation.toValue = [NSValue valueWithCGPoint:position];
    //设置fillMode 必须设置removedOnCompletion为NO
    anmiation.removedOnCompletion = NO;
    anmiation.fillMode = kCAFillModeBoth;
    //设置质量
    anmiation.mass = 2;
    //设置刚度 刚度越大 运动速率越快
    anmiation.stiffness = 50;
    //设置阻力 摩擦率
    anmiation.damping = 5;
    //设置初始速率
    anmiation.initialVelocity = 5;
    
    //把获得到弹簧动画的预估时间 赋给动画的持续时间
    anmiation.duration = anmiation.settlingDuration;
    
    [self.anmitionView.layer addAnimation:anmiation forKey:@"move"];
    
}

- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    [self movie:[[touches anyObject] locationInView:self.view]];
}
@end

效果如下:

 

posted @ 2016-04-12 21:23  〤twinkle゛新  阅读(539)  评论(0编辑  收藏  举报