zoukankan      html  css  js  c++  java
  • Swift

    如果使用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, 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 = "时间到!"
            }
        }
    }
  • 相关阅读:
    人员安排问题--搜索算法的剪支方法应用
    深度优先搜索与广度有限搜索的比较
    任务调度问题-使用拟阵进行解决
    无向图的最小生成森林的拟阵解法
    拟阵的最优子集问题的贪心算法
    中国大学MOOC —— 学习笔记(三)
    中国大学MOOC —— 学习笔记(二)
    中国大学MOOC —— 学习笔记(一)
    Python DayDayUp —— 小项目实现(二)
    Python DayDayUp —— shelve模块
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/4838194.html
Copyright © 2011-2022 走看看