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中实现简单易懂秒杀倒计时/倒计时代码 的全部内容, 来源链接: utcz.com/z/319952.html

回到顶部