自定义倒计时按钮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

       }



    }

}


























你可能感兴趣的:(swift,自定义倒计时按钮,button)