UIDatePicker倒计时 swift
//
// ViewController.swift
// UILabelTest
//
// Created by mac on 15/6/23.
// Copyright (c) 2015年 fangyuhao. All rights reserved.
//
import UIKit
class ViewController: UIViewController{
var ctimer:UIDatePicker!
var btnstart:UIButton!
var leftTime:Int = 180
var timer:NSTimer!
override func viewDidLoad() {
super.viewDidLoad()
ctimer = UIDatePicker(frame: CGRectMake(0, 120.0, 200, 200))
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)")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func startClicked(sender:UIButton){
self.btnstart.enabled = false
//获取该倒计时器的剩余时间
leftTime = Int(self.ctimer.countDownDuration)
//禁用UIDatePicker控件和按钮
self.ctimer.enabled = false
var message = NSString(format: "倒计时开始,还有%d秒", leftTime)
let alertView = UIAlertView()
alertView.title = "倒计时开始"
alertView.message = message
alertView.addButtonWithTitle("确定")
alertView.show()
//启动计时器,控制每隔60s执行一次tickDown方法
timer = NSTimer.scheduledTimerWithTimeInterval(NSTimeInterval(1), target: self, selector: Selector("tickDown"), userInfo: nil, repeats: true)
}
func tickDown(){
leftTime -= 1
self.ctimer.countDownDuration = NSTimeInterval(leftTime)
println(leftTime)
if(leftTime<=0){
timer.invalidate()
self.ctimer.enabled = true
self.btnstart.enabled = true
let alertView = UIAlertView()
alertView.title = "时间到"
alertView.message = "时间到"
alertView.addButtonWithTitle("确定")
alertView.show()
}
}
}
UIDatePicker倒计时 swift的更多相关文章
- UIDatePicker在swift中的使用
在上一篇文章中,创建了UISegmentedControl控件并了解它的简单用法,这篇文章主要学习DatePicker的使用,将通过Swift语言创建一个简单的例子. UIDatePicker对象:是 ...
- iOS 资源大全
这是个精心编排的列表,它包含了优秀的 iOS 框架.库.教程.XCode 插件.组件等等. 这个列表分为以下几个部分:框架( Frameworks ).组件( Components ).测试( Tes ...
- IOS中文版资源库
Swift 语言写成的项目会被标记为 ★ ,AppleWatch 的项目则会被标记为 ▲. [转自]https://github.com/jobbole/awesome-ios-cn#librari ...
- 墙裂推荐 iOS 资源大全
这是个精心编排的列表,它包含了优秀的 iOS 框架.库.教程.XCode 插件.组件等等. 这个列表分为以下几个部分:框架( Frameworks ).组件( Components ).测试( Tes ...
- iOS 资源大全整理
这是个精心编排的列表,它包含了优秀的 iOS 框架.库.教程.XCode 插件.组件等等. 这个列表分为以下几个部分:框架( Frameworks ).组件( Components ).测试( Tes ...
- Swift - 使用UIDatePicker实现倒计时功能
如果使用UIDatePicker时将模式设置为CountDownTimer,即可让该控件作为倒计时器来使用.效果图如下: 下面是代码示例: 1 2 3 4 5 6 7 8 9 10 11 12 ...
- Swift - UITableViewCell倒计时重用解决方案
Swift - UITableViewCell倒计时重用解决方案 效果 源码 https://github.com/YouXianMing/Swift-Animations // // CountDo ...
- UIDatePicker swift
// // ViewController.swift // UILabelTest // // Created by mac on 15/6/23. // Copyright (c) 2015年 fa ...
- Swift - 日期选择控件(UIDatePicker)的用法
1,使用storyboard创建日期选择控件 首先我们将一个UIDatePicker控件和一个按钮直接添加到Main.Storyboard上.该按钮是为了点击时弹出提示框显示当前选择的日期和时间. 同 ...
随机推荐
- WP8_GestureListener实现列表向下滑动加载新数据
利用GestureListener的OnDragCompleted事件,实现列表向下滑动时,加载新的数据: (不建议使用 Touch.FrameReported+=Touch_FrameReporte ...
- How to search compound files
Last week my friend told me that she made a terrible mistake. She conducted raw serch and found no s ...
- EasyUI datagrid 复杂表头处理
1:表头固定(前台写) 参照官方:http://www.jeasyui.net/demo/334.html 效果图: 源代码如下: <!DOCTYPE html> <html> ...
- ASP.NET内置对象一
ASP.NET提供了大量的对象类库,在这些类库中包含了许多封装好的内置对象,我们只需要直接使用这些对象的方法和属性,就能简单快速地完成很多的功能.Request对象.Response对象和Serve对 ...
- C#关于Sort排序问题
1.在集合中用Sort对集合元素进行排序 List<,,,,}; tmp.Sort((x, y) => -x.CompareTo(y)); Console.WriteLine(tmp); ...
- Kettle 合并记录报错!
在Kettle的合并记录过程的时候,在“为了转换解除补丁开始 ”这一步的时候报错.具体错误如图所示: Kettle的转换如图所示: 问题原因:可能是你的数据库链接驱动和Kettle的版本不兼容. 解决 ...
- ES2015 ——let命令的暂时性死区
ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. 和var不同的还有,let命令不存在变量提升,所以声明前调用变量,都会报错,这就涉及到 ...
- Jquery数组操作技巧
Jquery对数组的操作技巧. 1. $.each(array, [callback]) 遍历[常用] 解释: 不同于例遍 jQuery 对象的 $.each() 方法,此方法可用于例遍任何对象(不 ...
- redis 配置文件解读
# Redis 配置文件 # 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写) # # 1k => 1000 bytes # 1kb = ...
- Map(双列集合)
出现的原因:现实生活中有些数据成对存在. 特点:键不可重复,值可以重复. ----------|Map 数据都是以键值对的形式存在,键唯一,值可重复. --------- ...