1. 程式人生 > >ios彈簧動畫實現

ios彈簧動畫實現

我們經常看到彈簧動畫,像我們熟悉的微博就是一例,其實彈簧的動畫的實現是很簡單的,比如我想是想某個按鈕的上下震動的彈簧效果:

UIButton *button = [[UIButtonalloc] initWithFrame:CGRectMake(100,100, 100,50)];

    button.backgroundColor = [UIColorredColor];

    [self.viewaddSubview:button];

   [UIViewanimateWithDuration:1delay:0.5usingSpringWithDamping:0.3initialSpringVelocity

:0.6options:UIViewAnimationOptionCurveEaseInOutanimations:^{

      button.frame =CGRectMake(100,400, 100,50);

   } completion:^(BOOL finished) {

  }];

UIView的分類為我們實現了animateWithDuration這個方法,使得我們很容易就能實現彈簧效果。

+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay usingSpringWithDamping:(

CGFloat)dampingRatio initialSpringVelocity:(CGFloat)velocity options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^__nullable)(BOOL finished))completion

引數解析:

duration:動畫的持續時間

delay:動畫延時幾秒執行

dampingRatio :動畫阻尼係數

velocity:動畫開始速度

options:動畫效果引數

completion:動畫執行完成的回撥


其中:dampingRatio(動畫阻尼係數)和velocity(動畫開始速度)是需要重點了解的。阻尼係數(0~1),學物理的時候因該接觸過,衡量阻力大小的一個標準,阻尼係數越大則說明阻力越大,動畫的減速越開, 如果設為一的話,幾乎沒有彈簧的效果。而velocity(動畫開始速度:0~1)想對來說比較好理解,就是彈簧動畫開始時的速度。