核心动画——弹簧动画一

弹簧动画

弹簧动画: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

效果就是点击屏幕,视图上面的心会像弹簧一样在弹跳。

时间: 2024-12-23 19:29:35

核心动画——弹簧动画一的相关文章

用POP动画引擎实现弹簧动画(POPSpringAnimation)

效果图: #import "ViewController.h" #import <POP.h> @interface ViewController () @property (nonatomic, weak) UIView *testView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor

iOS:核心动画之动画组CAAnimationGroup

CAAnimationGroup——动画组 动画组,是CAAnimation的子类,可以保存一组动画对象,将CAAnimationGroup对象加入层后,组中所有动画对象可以同时并发运行 属性说明: –animations:用来保存一组动画对象的NSArray 默认情况下,一组动画对象是同时运行的,也可以通过设置动画对象的beginTime属性来更改动画的开始时间 具体的实例如下: 实现功能:在创建的动画组中存入两个基本动画,一个是沿着Z轴旋转360度的动画,另一个是放大2倍的动画,这两个动画并

iOS开发UI篇—核心动画(基础动画)

iOS开发UI篇—核心动画(基础动画) 一.简单介绍 CAPropertyAnimation的子类 属性解析: fromValue:keyPath相应属性的初始值 toValue:keyPath相应属性的结束值 随着动画的进行,在长度为duration的持续时间内,keyPath相应属性的值从fromValue渐渐地变为toValue 如果fillMode=kCAFillModeForwards和removedOnComletion=NO,那么在动画执行完毕后,图层会保持显示动画执行后的状态.但

iOS开发UI篇—核心动画(关键帧动画)

iOS开发UI篇—核心动画(关键帧动画) 一.简单介绍 是CApropertyAnimation的子类,跟CABasicAnimation的区别是:CABasicAnimation只能从一个数值(fromValue)变到另一个数值(toValue),而CAKeyframeAnimation会使用一个NSArray保存这些数值 属性解析: values:就是上述的NSArray对象.里面的元素称为”关键帧”(keyframe).动画对象会在指定的时间(duration)内,依次显示values数组

核心动画基础动画(CABasicAnimation)关键帧动画

1.在iOS中核心动画分为几类: 基础动画(CABasicAnimation) 关键帧动画(CAKeyframeAnimation) 动画组(CAAnimationGroup) 转场动画(CATransition) 2.CAAnimation:核心动画的基础类,不能直接使用,负责动画运行时间,速度的控制,本身实现了CAMediaTiming协议 3.CAPropertyAnimation:属性动画也是基类(通过属性进行动画设置,注意是动画属性),不能直接使用. CABasicAnimation:

iOS开发核心动画之动画

一. 核心动画简述 1. Core Animation是直接作用在CALayer上的,并非UIView,因此核心动画的本质是修改图层的某个属性 2. 核心动画继承结构 3. transform的相关属性 二. 核心动画 基础动画 : CABaseicAnimation 帧动画 : CAKeyframeAnimation 组动画 : CAAnimationGroup 转场动画 : CATransition 1. 基础动画(CABaseicAnimation) 1> 创建动画 CABasicAnim

[范例] Firemonkey 弹簧动画

弹簧动画效果: 不用写任何代码,只需设定下面动画属性: 参考动画曲线: http://monkeystyler.com/guide/Interpolation-and-AnimationType-Illustrated

核心动画(关键帧动画)

核心动画(关键帧动画) 一.简单介绍 是CApropertyAnimation的子类,跟CABasicAnimation的区别是:CABasicAnimation只能从一个数值(fromValue)变到另一个数值(toValue),而CAKeyframeAnimation会使用一个NSArray保存这些数值 属性解析: values:就是上述的NSArray对象.里面的元素称为”关键帧”(keyframe).动画对象会在指定的时间(duration)内,依次显示values数组中的每一个关键帧

iOS开发UI篇—核心动画(关键帧动画)(转摘)

iOS开发UI篇—核心动画(关键帧动画) 一.简单介绍 是CApropertyAnimation的子类,跟CABasicAnimation的区别是:CABasicAnimation只能从一个数值(fromValue)变到另一个数值(toValue),而CAKeyframeAnimation会使用一个NSArray保存这些数值 属性解析: values:就是上述的NSArray对象.里面的元素称为”关键帧”(keyframe).动画对象会在指定的时间(duration)内,依次显示values数组