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, 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, 100, 100, 50), 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)下载源码 !

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值