美文网首页视图控件
UIControllerCell秒杀活动倒计时 iOS代码实现

UIControllerCell秒杀活动倒计时 iOS代码实现

作者: Liebling_zn | 来源:发表于2018-12-17 16:54 被阅读16次

最近的项目中需要在自定义的Cell中用到活动结束倒计时,所以整理出来在这里:
在自定义的Cell.h文件中

@property (nonatomic, strong) dispatch_source_t timer;
@property (notatomic, string) NSString *endDate;  //结束的时间

在cell.m文件中

- (void)setEndDate:(NSString *)endDate
{
        _endDate = endDate;
         [self downSecondHandle:_endDate];
}

-(void)downSecondHandle:(NSString *)endDateString{
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

    NSDate *endDate = [NSDate dateWithFormat:endDateString]; 
    NSDate *endDate_tomorrow = [[NSDate alloc] initWithTimeIntervalSinceReferenceDate:([endDate timeIntervalSinceReferenceDate])];
    NSDate *startDate = [NSDate date];
    NSTimeInterval timeInterval =[endDate_tomorrow timeIntervalSinceDate:startDate];

    if (_timer==nil) {
        __block int timeout = timeInterval; //倒计时时间

        if (timeout!=0) {

            dispatch_queue_t queue =  dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
            _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);
            dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行
            dispatch_source_set_event_handler(_timer, ^{
                if(timeout<=0){ //倒计时结束,关闭
                    dispatch_source_cancel(_timer);
                    _timer = nil;
                    dispatch_async(dispatch_get_main_queue(), ^{
                        //倒计时结束的时候更新UI
                    });
                }else{
                    int days = (int)(timeout/(3600*24));
                    int hours = (int)((timeout-days*24*3600)/3600);
                    int minute = (int)(timeout-days*24*3600-hours*3600)/60;
                    int second = timeout-days*24*3600-hours*3600-minute*60;
                    dispatch_async(dispatch_get_main_queue(), ^{
                        NSLog(@"-->剩余时间:%d天%d时%d分%d秒",days,hours,minute,second);
                       self.downSecond.text = [NSString stringWithFormat:@"剩余:%d天%d时%d分%d秒",days,hours,minute,second];
                    });
                    timeout--;
                }
            });
            dispatch_resume(_timer);
        }
    }
}

相关文章

  • UIControllerCell秒杀活动倒计时 iOS代码实现

    最近的项目中需要在自定义的Cell中用到活动结束倒计时,所以整理出来在这里:在自定义的Cell.h文件中 在cel...

  • 倒计时

    ios怎么在cell上添加倒计时 iOS中 简单易懂的秒杀倒计时/倒计时 iOS开发-三种倒计时的写法 iOS实现...

  • 如何用js原生方法写出倒计时

    大家在浏览一些购物软件的时候,是不是经常会出现一些限时秒杀的活动呢?其实这里的倒计时 我们是可以用js代码去实现这...

  • 小程序实现简单的倒计时秒杀效果

    1:小程序实现电商秒杀倒计时效果+样式 wxml: wxss: js 效果如下 2:时分秒倒计时+样式拼团秒杀功能...

  • redis实现秒杀

    秒杀活动内容实现简单的秒杀页面(显示当前秒杀活动状态)和秒杀接口,不需要考虑下订单和退货流程。秒杀接口要求时间到了...

  • (转)JS实现活动精确倒计时

    背景 前端页面倒计时功能在很多场景中会用到,如运营活动开始倒计时和活动结束倒计时,又如购物网站的秒杀倒计时,抢购倒...

  • Redis-简易秒杀

    一、简易秒杀介绍   基于Spring Boot+MyBatis+Redis+MySQL实现简易秒杀功能,完整代码...

  • 手把手教你写个小程序定时器管理库

    作者:凹凸曼-阿集 背景 凹凸曼是个小程序开发者,他要在小程序实现秒杀倒计时。于是他不假思索,写了以下代码: 可是...

  • 活动秒杀倒计时

    https://www.jianshu.com/p/df43f1983eab[https://www.jiansh...

  • 小集自用

    1.如何实现一个倒计时功能,类似于蘑菇街中的秒杀 2.iOS屏幕尺寸了解 3.进程和线程的理解 进程是资源分配的最...

网友评论

    本文标题:UIControllerCell秒杀活动倒计时 iOS代码实现

    本文链接:https://www.haomeiwen.com/subject/ohlckqtx.html