使用NSTimer计时器实现简单的按钮倒计时功能

时间:2021-05-31 22:03:17

现在我们做实际开发的时候,当用户进行注册,支付,修改密码等操作的时候,经常会遇到通过短信获取验证码,为了防止用户频繁的操作按钮,需要对按钮做(60)或者(90)秒的倒计时设置.要实现这样的功能,我们一般使用NSTimer定时器来做倒计时,下面我们来看具体的实现过程.

首先,设置一个简单的页面

使用NSTimer计时器实现简单的按钮倒计时功能


然后设置一个定时器:

//定义变量

int seconds = 60;

NSTimer *timer;


//倒计时方法验证码实现倒计时60秒,60秒后按钮变换开始的样子

-(void)timerGetVerifyCodeMethod:(NSTimer *)theTimer {

    

    if (seconds == 1) {

        [theTimer invalidate];

        seconds = 60;

        [_showBtn setEnabled:YES];

        [_showBtn setBackgroundColor:[UIColor redColor]];

        [_showBtn setTitle:@"获取验证码" forState:UIControlStateNormal];

        [_showBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

        [_showBtn.layer setBorderWidth:0.5];

        

    }else{

        seconds--;

        NSString *title = [NSString stringWithFormat:@"重新发送(%d)",seconds];

        [_showBtn setTitle:title forState:UIControlStateNormal];

        [_showBtn setEnabled:NO];

        [_showBtn setBackgroundColor:[UIColor grayColor]];

        [_showBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

    }

    

}


最后,在按钮点击事件中,调用定时器:

- (IBAction)doAlertViewShow:(UIButton *)sender {

//    seconds = 60;

    timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerGetVerifyCodeMethod:) userInfo:nil repeats:YES];

    

}


这样就可以完成一个简单的按钮定时器功能了.实现效果如下:

使用NSTimer计时器实现简单的按钮倒计时功能