iOS实现秒杀活动倒计时
IOS关于大型网站抢购、距活动结束,剩余时间倒计时的实现代码,代码比较简单,大家根据需求适当的添加修改删除代码
1.定义4个Label来接收倒计时:
@property(weak,nonatomic)IBOutletUILabel*dayLabel; @property(weak,nonatomic)IBOutletUILabel*hourLabel; @property(weak,nonatomic)IBOutletUILabel*minuteLabel; @property(weak,nonatomic)IBOutletUILabel*secondLabel;
2.在实现文件中实现方法:
//时间戳转换为日期格式(毫秒的时间戳) -(NSString*)timeWithTimeIntervalString:(NSString*)timeString { //格式化时间 NSDateFormatter*formatter=[[NSDateFormatteralloc]init]; formatter.timeZone=[NSTimeZonetimeZoneWithName:@"shanghai"]; [formattersetDateStyle:NSDateFormatterMediumStyle]; [formattersetTimeStyle:NSDateFormatterShortStyle]; [formattersetDateFormat:@"yyyy-MM-ddHH:mm:ss"]; //毫秒值转化为秒 NSDate*date=[NSDatedateWithTimeIntervalSince1970:[timeStringdoubleValue]/1000.0]; NSString*dateString=[formatterstringFromDate:date]; NSLog(@"时间===%@",dateString); returndateString; } -(void)downSecondHandle:(NSString*)aTimeString{ NSDateFormatter*dateFormatter=[[NSDateFormatteralloc]init]; [dateFormattersetDateFormat:@"yyyy-MM-ddHH:mm:ss"]; NSDate*endDate=[dateFormatterdateFromString:[selftimeWithTimeIntervalString:aTimeString]];//结束时间 NSDate*endDate_tomorrow=[[NSDatealloc]initWithTimeIntervalSinceReferenceDate:([endDatetimeIntervalSinceReferenceDate])]; NSDate*startDate=[NSDatedate]; NSString*dateString=[dateFormatterstringFromDate:startDate]; NSLog(@"现在的时间===%@",dateString); NSTimeIntervaltimeInterval=[endDate_tomorrowtimeIntervalSinceDate:startDate]; if(_timer==nil){ __blockinttimeout=timeInterval;//倒计时时间 if(timeout!=0){ dispatch_queue_tqueue=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(),^{ self.dayLabel.text=@""; self.hourLabel.text=@"00"; self.minuteLabel.text=@"00"; self.secondLabel.text=@"00"; }); }else{ intdays=(int)(timeout/(3600*24)); if(days==0){ self.dayLabel.text=@""; } inthours=(int)((timeout-days*24*3600)/3600); intminute=(int)(timeout-days*24*3600-hours*3600)/60; intsecond=timeout-days*24*3600-hours*3600-minute*60; dispatch_async(dispatch_get_main_queue(),^{ if(days==0){ self.dayLabel.text=@"0天"; }else{ self.dayLabel.text=[NSStringstringWithFormat:@"%d天",days]; } if(hours<10){ self.hourLabel.text=[NSStringstringWithFormat:@"0%d",hours]; }else{ self.hourLabel.text=[NSStringstringWithFormat:@"%d",hours]; } if(minute<10){ self.minuteLabel.text=[NSStringstringWithFormat:@"0%d",minute]; }else{ self.minuteLabel.text=[NSStringstringWithFormat:@"%d",minute]; } if(second<10){ self.secondLabel.text=[NSStringstringWithFormat:@"0%d",second]; }else{ self.secondLabel.text=[NSStringstringWithFormat:@"%d",second]; } }); timeout--; } }); dispatch_resume(_timer); } } }
3.在需要出使用:
[selfdownSecondHandle:@"1494622800000"];
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。