iOS仿AirPods弹出动画

 更新时间:2019年12月14日 13:21:17   作者:Peter_Huang0623  
这篇文章主要为大家详细介绍了iOS仿AirPods弹出动画的实现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了iOS仿AirPods弹出动画的具体代码,供大家参考,具体内容如下

效果图

预览图

思路

在当前ViewController下Present另外一个AnimationViewController,在弹出的AnimationViewController中播放动画,弹出的时候原来的ViewController上有一个全屏覆盖的maskView,在弹出时,有一个渐变动画(页面渐黑),在AnimationViewController声明一个代理,在代理方法中实现收起的动画效果(dissmissController和maskView消失)

主要代码

HCAirPodsAnimationViewController *vc = [[HCAirPodsAnimationViewController alloc] init];
  vc.delegate = self;
  vc.modalPresentationStyle = UIModalPresentationOverCurrentContext;
  
  [UIView animateWithDuration:0.2 animations:^{
    self.maskBgView.alpha = 0.5;
  } completion:nil];
  
  [self presentViewController:vc animated:YES completion:^{
    [vc.animationView play];
  }];

模态跳转的style有一个枚举值,在iOS13以前modalPresentationStyle的默认值为UIModalPresentationFullScreen,iOS13以后变成了UIModalPresentationPageSheet,在这里我们把style设置为UIModalPresentationOverCurrentContext弹出的这个控制器就会覆盖在原来的控制器之上

- (UIView *)maskBgView
{
  if (!_maskBgView) {
    _maskBgView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
    _maskBgView.backgroundColor = [UIColor blackColor];
    _maskBgView.alpha = 0;
    [self.view addSubview:_maskBgView];
  }
  return _maskBgView;
}

一个覆盖全屏的maskView采用懒加载的方式实现

- (void)initContentView
{
  CGFloat containerW = SCREEN_WIDTH - 20;
  CGFloat containerH = containerW * 0.9;
  UIView *containerView = [[UIView alloc] initWithFrame:CGRectMake(10, SCREEN_HEIGHT - containerH - 10, containerW, containerH)];
  containerView.layer.cornerRadius = 20;
  containerView.backgroundColor = [UIColor whiteColor];
  [self.view addSubview:containerView];
  
  self.animationView = [[LOTAnimationView alloc] initWithFrame:CGRectMake(70, 70, containerW - 140, containerH - 140)];
  [containerView addSubview:self.animationView];
  self.animationView.animation = @"gift_animation";
  
  self.animationView.loopAnimation = YES;
  
  UIButton *confirmButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 200, 34)];
  confirmButton.center = CGPointMake(self.animationView.center.x, containerH - 44);
  
  [confirmButton setTitle:@"Close" forState:UIControlStateNormal];
  [confirmButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
  
  [confirmButton setBackgroundColor:[UIColor blueColor]];
  confirmButton.layer.cornerRadius = 10;
  
  [confirmButton addTarget:self action:@selector(onConfirmButtonClick) forControlEvents:UIControlEventTouchUpInside];
  [containerView addSubview:confirmButton];
}

动画这里用到的是Lottie这个动画开源库(Airbnb),这个开源库主要的功能是可以将After Effects制作的动画通过插件导出为json格式的文件,然后通过这个开源库解析成动画。

- (void)onConfirmButtonClick
{
  if ([self.delegate respondsToSelector:@selector(onAirPodsAnimationViewControllerConfirmButtonClick:)]) {
    [self dismissViewControllerAnimated:YES completion:nil];
    [self.delegate onAirPodsAnimationViewControllerConfirmButtonClick:self];
  }
}

dissmiss当前的控制器,让viewController来实现这个代理方法,并且在代理方法中隐藏maskView

- (void)onAirPodsAnimationViewControllerConfirmButtonClick:(HCAirPodsAnimationViewController *)vc
{
  [UIView animateWithDuration:0.2 animations:^{
    self.maskBgView.alpha = 0.0;
  } completion:nil];
}

项目地址:AirPodsAnimation

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • iOS实现微信朋友圈视频截取功能

    iOS实现微信朋友圈视频截取功能

    这篇文章主要介绍了iOS实现微信朋友圈视频截取功能,微信使用非常普遍,功能也很强大,不知道大家对微信朋友圈视频截取功能有没有了解,下面脚本之家小编给大家带来详解介绍,感兴趣的朋友一起看看吧
    2018-07-07
  • iOS Segment带滑动条切换效果

    iOS Segment带滑动条切换效果

    这篇文章主要为大家详细介绍了iOS Segment带滑动条切换,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • iOS实现左右拖动抽屉效果

    iOS实现左右拖动抽屉效果

    这篇文章主要介绍了iOS实现左右拖动抽屉效果,理解ios平台类似于QQ主页面,利用触摸事件滑动touchesMoved实现的效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • iOS多线程应用开发中自定义NSOperation类的实例解析

    iOS多线程应用开发中自定义NSOperation类的实例解析

    这篇文章主要介绍了iOS多线程应用开发中自定义NSOperation类的实例解析,代码基于传统的Objective-C,需要的朋友可以参考下
    2016-01-01
  • IOS 开发之UIView动画的实例详解

    IOS 开发之UIView动画的实例详解

    这篇文章主要介绍了IOS 开发之UIView动画的实例详解的相关资料,需要的朋友可以参考下
    2017-07-07
  • iOS中只让textField使用键盘通知的实例代码

    iOS中只让textField使用键盘通知的实例代码

    本文通过实例代码给大家介绍了OS中只让textField使用键盘通知的操作方法,代码简单易懂,非常不错,具有参考借鉴加载,需要的的朋友参考下吧
    2017-07-07
  • iOS开发微信收款到账语音提醒功能思路详解

    iOS开发微信收款到账语音提醒功能思路详解

    这篇文章主要介绍了iOS开发微信收款到账语音提醒功能思路详解,需要的朋友可以参考下
    2017-09-09
  • iOS开发学习TableView展现一个list实例

    iOS开发学习TableView展现一个list实例

    这篇文章主要为大家介绍了iOS系列学习TableView展现一个list实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • iOS用UITextField切换明文/密文显示时末尾空白的问题解决

    iOS用UITextField切换明文/密文显示时末尾空白的问题解决

    最近在工作中遇到一个问题,利用UITextField切换明文/密文显示时发现字符串后面会出现一段空白,所以下面这篇文章主要给大家介绍了iOS用UITextField切换明文/密文显示时末尾空白问题的解决方法,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-05-05
  • iOS block的值捕获与指针捕获详解

    iOS block的值捕获与指针捕获详解

    Block它是C语言级别和运行时方面的一个特征,下面这篇文章主要给大家介绍了关于iOS block的值捕获与指针捕获的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-02-02

最新评论