自定义倒计时按钮swift版

//

//  sendBtn.swift

//  自定义验证码按钮

//

//  Created by apple on 16/4/22.

//  Copyright © 2016 崔家维. All rights reserved.

//


import UIKit

let  NUMSS = 60

protocol sendBtnDelegate:NSObjectProtocol {

    func whenSendBtnClicked(button:sendBtn) -> Void

}


class sendBtn: UIButton {


    //    定时器

    var  i = NUMSS

    var myTimer:NSTimer?

    weak var delegate:sendBtnDelegate!

    var  currentColor:UIColor?

    

//    初始化控件

    func initwith(frame:CGRect,color:UIColor,title:String,superView:UIView,delegate:sendBtnDelegate) -> Void {

        self.frame = frame;

        self.backgroundColor = color

        self.setTitle(title, forState: UIControlState.Normal)

        self.addTarget(self, action: #selector(CodeButtonTapped), forControlEvents: UIControlEvents.TouchUpInside)

        superView.addSubview(self)

        self.delegate = delegate

        self.userInteractionEnabled = true

        self.currentColor = color

    }

//    点击变为不可用状态

    func CodeButtonTapped(button:sendBtn)

    {

        button.setTitle("重发(60)", forState: UIControlState.Disabled)

        button.titleLabel?.adjustsFontSizeToFitWidth = true

        button.backgroundColor=UIColor.lightGrayColor()

        button.enabled=false   

        myTimer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: #selector(tiemrBengin), userInfo: button, repeats: true)

//        代理实现方法

        self.delegate.whenSendBtnClicked(button)

}

    func  tiemrBengin(timer:NSTimer)

    {    i -= 1

         let  button = timer.userInfo as! sendBtn

         button.setTitle(String(format: "重发(%d)",i), forState: UIControlState.Disabled)

         button.backgroundColor=UIColor.lightGrayColor()

        if i == 0 {

        timer.invalidate()

        button.enabled=true

        button.backgroundColor = self.currentColor

        i = NUMSS

       }



    }

}


























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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值