# 仿微博弹簧动画

> 老玩微博，最近在研究动画，周末抽空写了个发微博的动画



# 实现步骤

- 首先模打出一个控制器
- 这个控制器用来显示多个按钮。（按钮是图文上下排列的，所以我们需要自定义按钮的布局样式）
- 动画思路：先在界面添加好几个 UIButton，之后给每个 button 添加**y**方向的平移动画 -> 设置一个定时器，每次执行的时候依次取出按钮，将按钮添加一个弹簧动画（**usingSpringWithDamping **）将形变动画恢复原位 
- 给按钮添加2种事件（按下的事件、点击后抬起的事件）

## 关键代码

```
//开始时让所有按钮都移动到最底部
btn.transform = CGAffineTransformMakeTranslation(0, self.view.bounds.size.height);
        
//添加定时器
self.timer =  [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(update) userInfo:nil repeats:YES];
 
- (void)update{
    if (self.btnIndex == self.btnArray.count) {
        [self.timer invalidate];
        return ;
    }
    
    VerticalStyleButton *button = self.btnArray[self.btnIndex];
    //弹簧动画
    [UIView animateWithDuration:0.3 delay:0.2 usingSpringWithDamping:0.8 initialSpringVelocity:0 options:UIViewAnimationOptionCurveLinear animations:^{
        button.transform = CGAffineTransformIdentity;
    } completion:^(BOOL finished) {
       
    }];
     self.btnIndex++;
}

- (void)btnClick:(UIButton *)button{
    [UIView animateWithDuration:0.25 animations:^{
        button.transform = CGAffineTransformMakeScale(1.2, 1.2);
    }];
}

- (void)btnClick1:(UIButton *)button{
    [UIView animateWithDuration:0.25 animations:^{
        button.alpha = 0;
        button.transform = CGAffineTransformMakeScale(2, 2);
    }];
}
```



# 效果图


![发微博动画效果](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/QQ20180610-225937-HD.gif)





[源码地址](https://github.com/FantasticLBP/BlogDemos/tree/master/微博发帖动画)

