Swift - 使用UIDatePicker实现倒计时功能
|
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 = "时间到!" } }} |
Swift - 使用UIDatePicker实现倒计时功能的更多相关文章
- Java第十二次作业:什么是一维数组?什么是对象数组?吃金币游戏2.0版 新增炸弹功能 新增游戏倒计时功能 新增胜利失败检测功能 使用如鹏游戏引擎制作窗体 一维数组设置金币
什么是数组? 数组的定义:是用统一的名字代表这批数据,用序号来区分各个数据.数组是无序的数据元素按有序的下标组成的集合,分配固定空间大小的一种容器. 如何理解:其实就是一个同时放很多数据的变量. a= ...
- html5 canvas 实现倒计时 功能
function showTime(a) { var b = { id: "showtime", //canvasid x: 60, //中心点坐标 X轴; y: 60, //中心 ...
- 模块:js实现一个倒计时功能
1.给显示内容加样式 <style> #p1{font-size: large; color: red;} </style> 2.客户端页面 <div id=" ...
- iOS “获取验证码”按钮的倒计时功能
iOS 的倒计时有多种实现细节,Cocoa Touch 为我们提供了 NSTimer 类和 GCD 的dispatch_source_set_timer方法去更加方便的使用计时器.我们也可以很容易的的 ...
- Android 关于倒计时功能的实现
关于倒计时的实现,可以说有很多的方法,比较常见的就是Timer+TimerTask+Handler了,或者还可以配合Runnable.例如下面的代码: import java.util.Timer; ...
- iOS 按钮倒计时功能
iOS 按钮倒计时功能, 建议把按钮换成label,这样会避免读秒时闪烁 __block ; __block UIButton *verifybutton = _GetverificationBtn; ...
- Swift得知——使用和分类功能(四)
Swift得知--使用和分类功能(四) 总结Swift该功能使用的总可分为七类 1 ---- 没有返回值,没有參数的函数 2 ---- 有參数和返回值的函数 3 ---- 使用元祖来返回多个值 4 - ...
- js实现是倒计时功能
工作中经常用到倒计时的功能,最近在整理之前做的项目的时候,发现自己写过一个倒计时的功能的效果,这里和大家分享下!实现这个功能是用原生js写的,不需要加载额外的库文件!功能比较简单,但是可以在此基础上扩 ...
- App启动页倒计时功能
转载请注明出处:http://www.cnblogs.com/cnwutianhao/p/6753418.html 示例代码采用 RxJava + RxLifecycle + Data-Binding ...
随机推荐
- 【译】在Asp.Net中操作PDF – iTextSharp -利用块,短语,段落添加文本
原文 [译]在Asp.Net中操作PDF – iTextSharp -利用块,短语,段落添加文本 本篇文章是讲述使用iTextSharp这个开源组件的系列文章的第三篇,iTextSharp可以通过As ...
- set global read_only=0; 关闭只读,可以读写 set global read_only=1; 开始只读模式
mysql> set global read_only=0; Query OK, 0 rows affected (0.00 sec) mysql> show variables like ...
- 调试出不来 断点不起作用 调试技巧 MyEclipse进不了调试
1:今天遇到了web项目调试总是不起作用,后来经人指点才知,当调试的断点仅仅是一个小圆圈时断点是不起作用的,这是可以重启下tomcat服务器再重新访问断点才会起作用,这是你会发现断点的小圆点左下角有个 ...
- Netty In Action中文版 - 第五章:Buffers(缓冲)
本章介绍 ByteBuf ByteBufHolder ByteBufAllocator 使用这些接口分配缓冲和运行操作 每当你须要数据传输时,它必须包括一个缓冲区.Java NIO API自带的缓冲区 ...
- Session 转台服务器的使用方法
Session的缺陷:为了保持自身的稳定,IIS在访问量大的时候,可能会不自觉的重启,这时候Session就会丢失用户就会被迫下线 解决方案1:将Session放到一个专门的转台服务器上 方案2:将S ...
- Java基础10 接口的继承与抽象类
链接地址:http://www.cnblogs.com/vamei/archive/2013/03/31/2982240.html 作者:Vamei 出处:http://www.cnblogs.com ...
- ubuntu 14.04 使用极点五笔输入法
相比12.04在外观改变不是非常大,但当中细节有些许变化,特别输入法非常不大好用,为此,我们使用fcitx输入法,使用我喜欢的五笔拼音,安装步骤例如以下: 方法一: 最新的方法非常easy: 安装14 ...
- 【Tips】Endnote导入IEEE Xplore文献方法《转载》
1. 在IEEE XPlore中点击“Download Citation”: 2. 选中“Citation & Abstract”和“EndNote,Procite,RefMan”两个选项: ...
- 实现长按删除QListWidget的Item
原地址:http://blog.sina.com.cn/s/blog_5c70dfc80100r99u.html 要想长按删除QListWidget的Item,必须重写鼠标事件,所以需要继承QList ...
- delphi程序设计之底层原理(有些深度)
虽然用delphi也有7,8年了,但大部分时间还是用在系统的架构上,对delphi底层还是一知半解,今天在网上看到一篇文章写得很好,虽然是07年的,但仍有借鉴的价值. 现摘录如下: Delphi程序设 ...