哇,一转眼都凌晨1:30了(可怜的我还在写博客,不过趁这段时间有空多写写,多总结总结是没有错的,希望能和大家一起进步),终于把今天,不对,昨天突然想实现的一个倒计时Label写好了,感觉像现在app中这种登陆啊,获取验证码什么的用着的地方会特别多,不足之处还望指正!
别的不扯多了,下面进入正题!
一.重写button
的init
方法
代码如下:
convenience init(count: Int,frame: CGRect,var color: UIColor?) {
self.init(frame: frame)
//如果设定的有color就显示color,没有就显示默认的
if color == nil {
color = normal_bgColor
} else {
normal_bgColor = color!
}
self.backgroundColor = color
self.startCount = count
self.originNum = count
self.addLabel()
super.addTarget(self,action: Selector("startCountDown"),forControlEvents: UIControlEvents.TouchUpInside )
}
这里重写了init方法,后面加了count
(倒计时的时长),frame
,color
这三个参数,由于这个color
是可以设置有或者无德,所以申明为可选值(Opational Value)
,而且还声明为可变的(var
),当颜色值你不设置的时候,会默认为normal_bgColor
这个颜色(源码中已经设置好)。
二.开启定时器,开始倒计时
// 开启定时器
func startCountDown() {
self.timer = NSTimer.scheduledTimerWithTimeInterval(1,target: self,selector: Selector("countDown"),userInfo: nil,repeats: true)
self.backgroundColor = enabled_bgColor
// self.setTitleColor(UIColor.blackColor(),forState: UIControlState.Disabled)
self.enabled = false
//动画开始
switch self.animaType {
case .CHWBtnTypeScale :
self.numAnimation()
case .CHWBtnTypeRotate:
self.rotateAnimation()
}
println("pass")
}
这里我设置了button
的两种类型,一个是放大消失的效果CHWBtnTypeScale
,一个是旋转缩小消失的效果CHWBtnTypeRotate
,这两种类型定义为枚举类型,如下:
enum CountBtnType {
case CHWBtnTypeScale
case CHWBtnTypeRotate
}
这样我就可以灵活的设置我的倒计时Label,然后用不同的效果,关于swift的枚举就不多说了,如果不清楚的可以看这里,里面有详细的介绍。关于动画部分都比较简单,这里就不说了,后面会附上代码的下载链接,有需要的可以下载看看。
三.使用
使用其实很简单,把CHWButton.swift
这个文件拉进你的工程,然后创建一个这个类型的对象就行了,这里列举出来两个例子:
let btn = CHWButton(count: 5,frame: CGRectMake(50,100,50),color:nil)
btn.animaType = CountBtnType.CHWBtnTypeScale
btn.layer.masksToBounds = true
btn.layer.cornerRadius = 5
self.view.addSubview(btn)
let btn2 = CHWButton(count: 5,frame: CGRectMake(200,color:UIColor.cyanColor())
btn2.enabled_bgColor = UIColor.greenColor()
btn2.animaType = CountBtnType.CHWBtnTypeRotate
btn2.layer.masksToBounds = true
btn2.layer.cornerRadius = 5
self.view.addSubview(btn2)
两种类型的效果如下:
1.CHWBtnTypeScale
2.CHWBtnTypeRotate
这里只是做了一个简单地效果,主要是练习swift以及swift的封装思想,就当是为迎接swift大潮流的到来先做准备吧,好吧,今天就到这里了,八一建军节快乐,要睡觉了,good night everyone !
最后你可以在这里(CSDN)或者这里(GitHub)下载源码 !