欢迎来到代码驿站!

iOS代码

当前位置:首页 > 移动开发 > iOS代码

iOS中实现简单易懂秒杀倒计时/倒计时代码

时间:2021-04-28 08:07:34|栏目:iOS代码|点击:

示例代码简单易懂:

#import
<uikit uikit.h="">
@interface
ViewController : UIViewController
@property
(weak, nonatomic) IBOutlet UILabel *dayLabel;
@property
(weak, nonatomic) IBOutlet UILabel *hourLabel;
@property
(weak, nonatomic) IBOutlet UILabel *minuteLabel;
@property
(weak, nonatomic) IBOutlet UILabel *secondLabel;
@end</uikit>
#import
"ViewController.h"
@interface
ViewController ()
{
  dispatch_source_t
 _timer;
}
@end
@implementation
ViewController
/**
 * 
 获取当天的年月日的字符串
 * 
 这里测试用
 * 
 @return 格式为年-月-日
 */
-(NSString
 *)getyyyymmdd{
 NSDate
 *now = [NSDate date];
 NSDateFormatter
 *formatDay = [[NSDateFormatter alloc] init];
 formatDay.dateFormat
 = @"yyyy-MM-dd";
 NSString
 *dayStr = [formatDay stringFromDate:now];
 return
dayStr;
}
-
 (void)viewDidLoad
 {
 [super
viewDidLoad];
 NSDateFormatter
 *dateFormatter=[[NSDateFormatter alloc] init];
 [dateFormatter
 setDateFormat:@"yyyy-MM-dd"];
 NSDate
 *endDate = [dateFormatter dateFromString:[self getyyyymmdd]];
 NSDate
 *endDate_tomorrow = [[NSDate alloc] initWithTimeIntervalSinceReferenceDate:([endDate timeIntervalSinceReferenceDate] +
24*3600)];
 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(),
 ^{
      self.dayLabel.text
 = @"";
      self.hourLabel.text
 = @"00";
      self.minuteLabel.text
 = @"00";
      self.secondLabel.text
 = @"00";
     });
    }else{
     int
days = (int)(timeout/(3600*24));
     if
(days==0)
 {
      self.dayLabel.text
 = @"";
     }
     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(),
 ^{
      if
(days==0)
 {
       self.dayLabel.text
 = @"0天";
      }else{
       self.dayLabel.text
 = [NSString stringWithFormat:@"%d天",days];
      }
      if
(hours<10)
 {
       self.hourLabel.text
 = [NSString stringWithFormat:@"0%d",hours];
      }else{
       self.hourLabel.text
 = [NSString stringWithFormat:@"%d",hours];
      }
      if
(minute<10)
 {
       self.minuteLabel.text
 = [NSString stringWithFormat:@"0%d",minute];
      }else{
       self.minuteLabel.text
 = [NSString stringWithFormat:@"%d",minute];
      }
      if
(second<10)
 {
       self.secondLabel.text
 = [NSString stringWithFormat:@"0%d",second];
      }else{
       self.secondLabel.text
 = [NSString stringWithFormat:@"%d",second];
      }
     });
     timeout--;
    }
   });
   dispatch_resume(_timer);
  }
 }
}
<span
 style="font-family:
 Arial, Verdana, sans-serif;">效果:</span>

上一篇:iOS实现波浪效果

栏    目:iOS代码

下一篇:浅谈iOS解析HTMl标签以及开发中的一些坑

本文标题:iOS中实现简单易懂秒杀倒计时/倒计时代码

本文地址:http://www.codeinn.net/misctech/110631.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有