Swift封装的一种带动画的倒计时Button

哇,一转眼都凌晨1:30了(可怜的我还在写博客,不过趁这段时间有空多写写,多总结总结是没有错的,希望能和大家一起进步),终于把今天,不对,昨天突然想实现的一个倒计时Label写好了,感觉像现在app中这种登陆啊,获取验证码什么的用着的地方会特别多,不足之处还望指正!

别的不扯多了,下面进入正题!

一.重写buttoninit方法

代码如下:

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(倒计时的时长),framecolor这三个参数,由于这个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)下载源码 !

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...