自定义倒计时按钮swift版

本文介绍了一种使用Swift语言在iOS应用中自定义验证码发送按钮的方法。该按钮具备倒计时功能并能调整自身状态,从可用到不可用,再重新激活。通过设置代理方法,开发者可以轻松集成验证码发送逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//

//  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

       }



    }

}


























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值