iOS秒杀倒计时

秒杀倒计时

#import "ViewController.h"

#define SCREEN_WIDTH [[UIScreen mainScreen]bounds].size.width

#define SCREEN_HEIGHT  [[UIScreen mainScreen]bounds].size.height


@interface ViewController (){

    dispatch_source_t _timer;

}


@property (nonatomic,strong)UIView *ddView;


@property (nonatomic,strong)UILabel *dayLabel;//剩余天数


@property (nonatomic,strong)UILabel *hourLabel;//剩余小时


@property (nonatomic,strong)UILabel *minuteLabel;//剩余分钟


@property (nonatomic,strong)UILabel *secondLabel;//剩余秒

@end


//实现

@implementation ViewController

- (void)viewDidLoad {

    [super viewDidLoad];

    

    [self createUI];

    //日期格式

    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];//当前的date

    //距离明天凌晨的倒计时时间单位为s  25641.036014020443s

    NSTimeInterval timeInterVal = [endDate_Tomorrow timeIntervalSinceDate:startDate];

    if (!_timer) {

        __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 = @"";

                        self.minuteLabel.text = @"";

                        self.secondLabel.text = @"";

                    });

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

        }

    }

}


/*

 获取当天的年月日字符串

 */


- (NSString *)getYYYYMMDD{

    NSDate *now =[NSDate date];

    NSDateFormatter  *formatToday = [[NSDateFormatter alloc]init];

    formatToday.dateFormat = @"yyyy-MM-dd";

    NSString *dayStr =  [formatToday stringFromDate:now];

    return dayStr;

}


- (void)createUI{

    self.ddView = [[UIView alloc]initWithFrame:CGRectMakeSCREEN_WIDTH - 168100,16050)];

    [self.view addSubview:self.ddView];

    float cutViewW = 160 / 4.0;

    self.dayLabel = [[UILabel alloc]initWithFrame:CGRectMake(010, cutViewW, 30)];

    self.dayLabel.textAlignment = NSTextAlignmentRight;

    [self.ddView addSubview:self.dayLabel];

    self.hourLabel = [[UILabel alloc]initWithFrame:CGRectMake(cutViewW, 10, cutViewW, 30)];

    self.hourLabel.textAlignment = NSTextAlignmentRight;

    [self.ddView addSubview:self.hourLabel];

    self.minuteLabel = [[UILabel alloc]initWithFrame:CGRectMake(2 * cutViewW, 10, cutViewW, 30)];

    self.minuteLabel.textAlignment = NSTextAlignmentRight;

    [self.ddView addSubview:self.minuteLabel];

    self.secondLabel = [[UILabel alloc]initWithFrame:CGRectMake(3 * cutViewW, 10, cutViewW, 30)];

    self.secondLabel.textAlignment = NSTextAlignmentRight;

    [self.ddView addSubview:self.secondLabel];

}

@end



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值