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 UIKit

class 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 = "时间到!"

        }

    }

}

时间: 2024-11-08 23:38:00

Swift - 使用UIDatePicker实现倒计时功能的相关文章

自己封装的一个简单的倒计时功能

因为平常工作中很常用到该功能,所以就利用这次国庆假期,重新梳理与对原有代码进行改善,再集成一个常用的功能,最终封装出这个“简单倒计时”功能. 该倒计时方法具有以下该功能: 1. 根据指定日期与当前的电脑时间进行匹配 2. 通过指定一个数组参数,来设置在每一天内不同的时间段进行倒计时. * 该方法还未通过实际工作的检测,稳定性未知(如果实际工作通过,会删除这段话) 1 function countDown(date,target,filter){ 2 3 var setTime = new Dat

Android倒计时功能的实现(CountDownTimer)

以前编程的时候,遇到倒计时的功能时,经常自己去写,但其实Android已经帮封装好了一个倒计时类CountDownTimer,其实是将后台线程的创建和Handler队列封装成为了一个方便的类调用. 说明: CountDownTimer timer = new CountDownTimer(30000, 1000)中,第一个参数表示总时间,第二个参数表示间隔时间. 意思就是每隔一秒会回调一次方法onTick,然后30秒之后会回调onFinish方法. package com.androidcoun

Android基础之——CountDownTimer类,轻松实现倒计时功能

在发现这个类之前,一直是用的handler,子线程发消息,UI线程进行倒计时的显示工作.前几天在做一个倒计时显示的时候发现了这个类,用起来很方便 翻看了下源码,内部已经帮我们实现了handler的子线程操作 CountDownTimer这个类用起来很简单,两个参数,几句代码搞定,如下: CountDownTimer(long millisInFuture, long countDownInterval) 构造函数有两个参数,第一个millisInFuture是指要倒计时的总时间,单位是long

Android开发:验证码倒计时功能实现

前言 现在好多个APP里面都有验证码倒计时按钮,实现方式大概有下面几种: 1.使用线程和Handler的方式,定时刷新倒计时数字,这种方式容易导致内存泄露,所以一般都使用弱引用,控制数字的刷新. 2.自定义倒计时按钮 3.使用Android提供的CountDownTimer结合TextView实现倒计时功能 这篇主要就是说下用第三种方式实现,简单好用 效果图 实现 以下是核心代码: /** * Created by hfs on 2017/5/9. */ public class TimeCou

jquery组件团购倒计时功能(转)

? 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 <!doctype html> <html> <head>     <meta charset="utf-8">     <title&g

App启动页倒计时功能

转载请注明出处:http://www.cnblogs.com/cnwutianhao/p/6753418.html 示例代码采用 RxJava + RxLifecycle + Data-Binding 模式编写 示例图: 话不多说,实现方式如下: 1.导入依赖库 ① RxJava: Reactive Extensions for the JVM compile 'io.reactivex:rxjava:1.2.9' compile 'io.reactivex:rxandroid:1.2.1' ②

为年度评选活动添加倒计时功能

背景:前几天,老总说为年度优秀员工评选活动(活动放在公司的OA上面,使用asp.net+MySql开发)添加一个倒计时功能,想想没什么难度,不过是计算一下年月日时分秒而已,用javascript能够简单搞定啦! 步骤: 1.传入活动结束时间: 2.获取当前时间:   3.计算时间戳的差值: 4.通过判断差值并计算出剩余的时间 分享: var tid; -- 当前时间 时间间隔周期调用函数的标记 var NowTime; -- 当前时间 var t; -- 时间戳差值 var EndTime =

模块:js实现一个倒计时功能

1.给显示内容加样式 <style> #p1{font-size: large; color: red;} </style> 2.客户端页面 <div id="p1">100</div> <button onclick="px()">倒计时开始</button> <button onclick="px1()">暂停</button> 3.js处理 &l

图文详解-如何用Axure做一个倒计时功能按钮

本篇主要给大家讲一下如何用Axure巧妙简单的实现一个倒计时功能. demo地址: http://pan.baidu.com/s/1jI4IRzC 密码: 8ghd 需要更详细学习的同学可以看下面文章.偷懒的同学可以直接在demo里复制出想要的部分即可使用了. 1.把主要元素进行排版设计: 这里每个人有每个人的习惯,没有一个标准,只是将主要元素进行组织后加以排版.大家发现并没有获取验证码按钮,这是我们的关键.下一步开始进行添加 2.添加一个Dynamic Panel(动态面板)命名为getCod