| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
sswood
8年前发布

秒杀倒计时/倒计时iOS代码实现

示例代码简单易懂:

每日更新关注:http://weibo.com/hanjunqiang  新浪微博

#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


#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);          }      }      }

效果:


每日更新关注:http://weibo.com/hanjunqiang  新浪微博