iOS中简单易懂秒杀倒计时/倒计时
来源:互联网 发布:php is_string 编辑:程序博客网 时间:2024/05/21 09:34
示例代码简单易懂:
1
2
3
4
5
6
7
8
9
10
#
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>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#
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>
0 0
- iOS中 简单易懂的秒杀倒计时/倒计时
- iOS中 简单易懂的秒杀倒计时/倒计时
- iOS中简单易懂秒杀倒计时/倒计时
- iOS中简单易懂秒杀倒计时/倒计时
- IOS倒计时秒杀
- iOS秒杀倒计时
- Android中倒计时库CountdownView倒计时商品秒杀
- 秒杀活动倒计时 iOS代码实现
- C# 秒杀倒计时
- 团购、秒杀倒计时
- 倒计时显示 秒杀
- 商城秒杀倒计时
- CountdownView秒杀倒计时
- Android 秒杀倒计时
- iOS点击button60秒倒计时
- NTP协议网络时间同步 ios中应用 实现秒杀倒计时
- iOS 秒杀倒计时 从服务器获得时间戳秒杀开始和结束倒计时。
- PHP商品秒杀倒计时
- AChartEngine
- recyclerview中有edittext的处理
- qq1455018613
- IO流_复制单级文件夹案例
- 43200005
- iOS中简单易懂秒杀倒计时/倒计时
- 用堆排序实现大致已经排好序的序列
- Eclipse复制或修改项目后,把项目部署后发现还是原来的项目名称
- 装好xampp之后修改PHP项目所在的目录
- WEB-XML&Tomcat
- AngularJS入门之如何快速上手(详细讲解什么是angular)
- 产品经理的素质能力模型
- iOS倒计时的实现,显示剩余天、时、分、秒
- Web Service学习小结——JAX-WS CXF AXIS2关系