zoukankan      html  css  js  c++  java
  • <房间内功能>打赏小动画

    截图如下 : 
     
     打赏礼物 弹窗
     
    功能:
     
    每次点击礼物,都要通过动画显示一个小图标,最多显示两行图标栏,送多次会显示然后再次显示,显示 XX 送给 XX 一个小礼物的动画样式.动画样式效果为,整体动画模块出现1秒,暂停1秒,消失一秒。
     
    功能实现:
     
    一个View 上面放了两个小模块,模块内包含两个imageView,3个UIlabel , 通过数组和BOOL开关来创造队列,控制多次打赏的动画显示顺序。
     
    首先判断数组中是否有动画队列存在,如果有,按顺序显示 第一个位置显示第一个动画,第二个位置显示第二个动画,等第一个动画显示完开始显示第三个动画。
     
    每个动画的执行顺序大概3秒,送礼模块出现1秒,送礼模块暂停1秒,送礼模块消失一秒。
     
    队列是通过数组来进行维持。
     
     
     
     
     
     
    代码Github :
     
     
     
    关键部分代码:
     
    - 动画效果:
     
    - (void)upLeftViewfadeInWithTime:(NSTimeInterval)time leftView:(IDSGiftSmallLeftSideView *)leftView{
        leftView.alpha = 0;
       
        [UIViewanimateWithDuration:time animations:^{
            leftView.alpha = 1;
        } completion:^(BOOL finished) {
     
            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                [UIViewanimateWithDuration:0.2animations:^{
                    leftView.alpha = 0;
                } completion:^(BOOL finished) {
                    _leftViewUpPlaying = NO;
                    [selfstartPlay];
                }];
            });
           
        }];
    }
     
     
    队列函数:
     
    - (void)startPlay
    {
        if (_playGifSwitch) {
            return;
        }
        if (_queenArray.count == 0) {
            _playGifSwitch = NO;
            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                if (_leftViewDownPlaying) {
                    return;
                }
                if (_leftViewUpPlaying) {
                    return;
                }
                self.hidden = YES;
            });
            return;
        }
        self.hidden = NO;
        _playGifSwitch = YES;
        if (_queenArray.count > 0) {
            if (!_leftViewUpPlaying) {
                _playGifSwitch = NO;
                [selfleftViewUpShow:_queenArray[_queenArray.count-1]];
                [_queenArrayremoveLastObject];
                return;
            }
            if (!_leftViewDownPlaying) {
                _playGifSwitch = NO;
                [selfleftViewDownShow:_queenArray[_queenArray.count-1]];
                [_queenArrayremoveLastObject];
                return;
            }
        }
        _playGifSwitch = NO;
    }
  • 相关阅读:
    Apache 的 ab 压测工具快速使用
    Go_22: Golang 命令行 test 应用
    Go_21: Golang 中 time 包的使用二
    ElasticStack系列之十八 & ElasticSearch5.x XPack 过期新 License 更新
    Go 语言编程规范
    ElasticStack系列之十七 & 大文本搜索性能提升方案
    ElasticStack系列之十六 & ElasticSearch5.x index/create 和 update 源码分析
    ElasticStack系列之十五 & query cache 引起性能问题思考
    golang 配置文件读取
    pandoc安装
  • 原文地址:https://www.cnblogs.com/firstrate/p/7887986.html
Copyright © 2011-2022 走看看