彈簧動畫 彈簧動畫:CASpringAnimation->CABasicAnimation(基礎動畫)->CAPropertyAnimation(屬性動畫)->CAAnimation(核心動畫) 下麵就是核心動畫的結構圖: 基礎動畫:CABasicAnimation->只能設置fromValue、t ...
彈簧動畫
彈簧動畫: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
效果就是點擊屏幕,視圖上面的心會像彈簧一樣在彈跳。