iOS动画——弹窗动画(pop动画)

时间:2021-12-26 17:25:44

用pop动画简单实现弹窗的缩放和渐变,感觉这个动画常用,就写一下博客

pop动画是Facebook推出的动画引擎,请自行到GitHub上搜索下载拖拽导入xcode项目中。

更多pop动画使用和原理可网上搜索学习

本处只简单介绍代码开发使用,紧以弹窗效果为思路。

iOS动画——弹窗动画(pop动画)

1. 控制器导入头文件 #import "POP.h"

2.创建弹窗透明黑色背景

  1. - (void)createBlackView {
  2. self.blackView                 = [[UIView alloc] initWithFrame:self.contentView.bounds];
  3. self.blackView.backgroundColor = [UIColor blackColor];
  4. self.blackView.alpha           = 0;
  5. [self addSubview:self.blackView];
  6. [UIView animateWithDuration:0.3f animations:^{
  7. self.blackView.alpha = 0.25f;
  8. }];
  9. }

3.创建白色上面的白色view,并加上所需的控件,给白色的messageView做pop动画效果,

代码如下

  1. // 执行动画 改变透明度
  2. POPBasicAnimation  *alpha = [POPBasicAnimation animationWithPropertyNamed:kPOPViewAlpha];
  3. alpha.toValue             = @(1.f);
  4. alpha.duration            = 0.3f;
  5. [self.messageView pop_addAnimation:alpha forKey:nil];
  6. // 缩放回弹
  7. POPSpringAnimation *scale = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerScaleXY];
  8. scale.fromValue           = [NSValue valueWithCGSize:CGSizeMake(1.75f, 1.75f)];
  9. scale.toValue             = [NSValue valueWithCGSize:CGSizeMake(1.f, 1.f)];
  10. scale.dynamicsTension     = 1000;
  11. scale.dynamicsMass        = 1.3;
  12. scale.dynamicsFriction    = 10.3;
  13. scale.springSpeed         = 20;
  14. scale.springBounciness    = 15.64;
  15. scale.delegate            = self;
  16. [self.messageView.layer pop_addAnimation:scale forKey:nil];

4.弹窗消失的思路代码

    1. - (void)removeViews {
    2. [UIView animateWithDuration:0.2f animations:^{
    3. self.blackView.alpha       = 0.f;
    4. self.messageView.alpha     = 0.f;
    5. self.messageView.transform = CGAffineTransformMakeScale(0.75f, 0.75f);
    6. } completion:^(BOOL finished) {
    7. [self removeFromSuperview];
    8. }];
    9. }