前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【iOS】仿抖音,小红书视频引导动画

【iOS】仿抖音,小红书视频引导动画

作者头像
MapleYe
发布2020-03-30 17:06:34
1.8K0
发布2020-03-30 17:06:34
举报
文章被收录于专栏:MapleYeMapleYeMapleYe

1、效果图

效果图
效果图
抖音上滑引导示例
抖音上滑引导示例
小红书双击点赞示例
小红书双击点赞示例

2、分析

从效果图来看,我们可以知道这个动画一共分为两部分: 1、滚动提示动画 2、点赞动画

2.1、滚动提示动画

该部分应该分为两步 1、scrollView设置偏移量 2、手指设置偏移量

代码:

CGPoint offset = self.tableView.contentOffset;
    CGPoint newOffset = offset;
    newOffset.y += [UIScreen mainScreen].bounds.size.height * 0.5;
    CGRect frame = self.guideView.frame;
    CGRect newFrame = frame;
    newFrame.origin.y = 88;
    [UIView animateWithDuration:2 animations:^{
        self.tableView.contentOffset = newOffset;
        self.guideView.frame = newFrame;
    } completion:^(BOOL finished) {
        [self.tableView setContentOffset:offset animated:YES];
        [UIView animateWithDuration:0.5 animations:^{
            self.guideView.alpha = 0;
        } completion:^(BOOL finished) {
            self.guideView.frame = frame;
        }];
    }];

2.2、点赞动画

动画拆分: 1、圆形缩小 -> 放大 -> 缩小 -> 放大 -> 消失 2、手指缩小 -> 放大 -> 缩小 -> 放大

因此,对于这种动画,我们最好使用帧动画。代码如下:

CAKeyframeAnimation* animation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
    animation.beginTime = CACurrentMediaTime() + delay;
    animation.duration = duration;
    NSMutableArray *values = [NSMutableArray array];[values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(1, 1, 1.0)]];
    [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(0.5, 0.5, 1.0)]];
    [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(1, 1, 1.0)]];
    [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(0.5, 0.5, 1.0)]];
    [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(2, 2, 1.0)]];
    
    animation.values = values;
    [self.circleView.layer addAnimation:animation forKey:nil];
    
    CAKeyframeAnimation *animation2 = [CAKeyframeAnimation animationWithKeyPath:@"opacity"];
    animation2.duration = duration;
    animation2.beginTime = CACurrentMediaTime() + delay;
    animation2.values = @[@(0.8), @(0.5)];
    animation2.delegate = self;
    [self.circleView.layer addAnimation:animation2 forKey:nil];
    
    CAKeyframeAnimation* animation3 = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
    animation3.duration = duration;
    animation3.beginTime = CACurrentMediaTime() + delay;
    NSMutableArray *values3 = [NSMutableArray array];[values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(1, 1, 1.0)]];
    [values3 addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(0.7, 0.7, 1.0)]];
    [values3 addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(1, 1, 1.0)]];
    [values3 addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(0.7, 0.7, 1.0)]];
    [values3 addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(1, 1, 1.0)]];
    animation3.values = values3;
    [self.fingerImgV.layer addAnimation:animation3 forKey:nil];

3、github地址

https://github.com/maple1994/RedBookGuideAnimation

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、效果图
  • 2、分析
    • 2.1、滚动提示动画
      • 2.2、点赞动画
      • 3、github地址
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档