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

前端之家收集整理的这篇文章主要介绍了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)下载源码 !

猜你在找的Swift相关文章