首页 > 系统 > iOS > 正文

iOS发送验证码倒计时应用

2020-07-26 03:02:06
字体:
来源:转载
供稿:网友

app注册的时候,经常会遇到发送验证码的功能,当点击发送验证码的时候,那个button就开始了倒计时,当计时结束才可以重新发送,效果如下:


具体代码实现如下:

- (IBAction)sendMes:(UIButton *)sender {  __block int timeout = 10 ; //倒计时时间  dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);  dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);  dispatch_source_set_timer(_timer, dispatch_walltime(NULL, 0), 1.0 * NSEC_PER_SEC, 0); //每秒执行  dispatch_source_set_event_handler(_timer, ^{ //每秒钟回调的方法 跟NSTimer 一样的的执行方法   if(timeout<=0){ //倒计时结束,关闭    dispatch_source_cancel(_timer);        dispatch_async(dispatch_get_main_queue(), ^{     //设置界面的按钮显示     [sender setTitle:@"发送验证码" forState:UIControlStateNormal];     sender.enabled = YES;    });       }else{    int seconds = timeout % 60;    NSString *strTime = [NSString stringWithFormat:@"%d", seconds];    dispatch_async(dispatch_get_main_queue(), ^{     NSLog(@"----%@", [NSThread currentThread]);     //设置界面的按钮显示     [sender setTitle:[NSString stringWithFormat:@"(%@)重新获取",strTime] forState:UIControlStateDisabled];     sender.enabled = NO;    });    timeout--;   }  });  //一定要调用resume 开启定时器的功能 } 

这个button可以直接在storyboard中实现,button的背景颜色选为灰色,再设置一个背景图片,如上图的红色图片,button的type设置为:custom

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表