iOS秒杀倒计时
2017-04-22 17:02
302 查看
秒杀倒计时
#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:CGRectMake( SCREEN_WIDTH - 168, 100,160, 50)];
[self.view addSubview:self.ddView];
float cutViewW = 160 / 4.0;
self.dayLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 10,
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
#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:CGRectMake( SCREEN_WIDTH - 168, 100,160, 50)];
[self.view addSubview:self.ddView];
float cutViewW = 160 / 4.0;
self.dayLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 10,
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
相关文章推荐
- iOS中 简单易懂的秒杀倒计时/倒计时
- iOS 秒杀倒计时 从服务器获得时间戳秒杀开始和结束倒计时。
- NTP协议网络时间同步 ios中应用 实现秒杀倒计时
- IOS倒计时秒杀
- iOS中 简单易懂的秒杀倒计时/倒计时
- 秒杀活动倒计时 iOS代码实现
- iOS中实现简单易懂秒杀倒计时/倒计时代码
- iOS中 简单易懂的秒杀倒计时/倒计时
- iOS中简单易懂秒杀倒计时/倒计时
- ios 使用gcd 显示倒计时
- ios 使用gcd 显示倒计时
- javascript 实现 秒杀,团购 倒计时展示的记录 分享
- [原创]Android秒杀倒计时自定义TextView
- IOS倒计时
- 秒杀倒计时的js脚本
- ios开发之倒计时实现的两种方法
- javascript 实现 秒杀,团购 倒计时展示的记录 分享
- ios开发之倒计时实现的两种方法
- iOS 倒计时
- 用NSTimer实现倒计时--ios开发