Swift - 使用UIDatePicker实现倒计时功能
如果使用UIDatePicker时将模式设置为CountDownTimer,即可让该控件作为倒计时器来使用。效果图如下:
![]()

下面是代码示例:
|
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
92
93
|
import UIKitclass ViewController: UIViewController { var ctimer:UIDatePicker! var btnstart:UIButton! var leftTime:Int = 180 var alertView:UIAlertView! var timer:NSTimer! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. ctimer = UIDatePicker(frame:CGRectMake(0.0, 120.0, 200.0, 200.0)) self.ctimer.datePickerMode = UIDatePickerMode.CountDownTimer; //必须为 60 的整数倍,比如设置为100,值自动变为 60 self.ctimer.countDownDuration = NSTimeInterval(leftTime); ctimer.addTarget(self, action: "timerChanged", forControlEvents: UIControlEvents.ValueChanged) self.view.addSubview(ctimer) btnstart = UIButton.buttonWithType(UIButtonType.System) as! UIButton btnstart.frame = CGRect(x:100, y:400, width:100, height:100); btnstart.setTitleColor(UIColor.redColor(), forState: UIControlState.Normal) btnstart.setTitleColor(UIColor.greenColor(), forState:UIControlState.Disabled) btnstart.setTitle("开始", forState:UIControlState.Normal) btnstart.setTitle("倒计时中", forState:UIControlState.Disabled) btnstart.clipsToBounds = true; btnstart.layer.cornerRadius = 5; btnstart.addTarget(self, action:"startClicked:", forControlEvents:UIControlEvents.TouchUpInside) self.view.addSubview(btnstart) } func timerChanged() { println("倒计时:\(self.ctimer.countDownDuration)") } /** *开始倒计时按钮点击 */ func startClicked(sender:UIButton) { self.btnstart.enabled = false; // 获取该倒计时器的剩余时间 leftTime = Int(self.ctimer.countDownDuration); // 禁用UIDatePicker控件和按钮 self.ctimer.enabled = false; // 创建一个UIAlertView对象(警告框),并确认,倒计时开始 alertView = UIAlertView() alertView.title = "到计时开始" alertView.message = "倒计时开始,还有 \(leftTime) 秒..." alertView.addButtonWithTitle("确定") // 显示UIAlertView组件 alertView.show() // 启用计时器,控制每秒执行一次tickDown方法 timer = NSTimer.scheduledTimerWithTimeInterval(NSTimeInterval(1), target:self,selector:Selector("tickDown"), userInfo:nil,repeats:true) } /** *计时器每秒触发事件 **/ func tickDown() { alertView.message = "倒计时开始,还有 \(leftTime) 秒..." // 将剩余时间减少1秒 leftTime -= 1; // 修改UIDatePicker的剩余时间 self.ctimer.countDownDuration = NSTimeInterval(leftTime); println(leftTime) // 如果剩余时间小于等于0 if(leftTime <= 0) { // 取消定时器 timer.invalidate(); // 启用UIDatePicker控件和按钮 self.ctimer.enabled = true; self.btnstart.enabled = true; alertView.message = "时间到!" } }} |

浙公网安备 33010602011771号