倒計時發送

 1 -(void)startTime{
 2     __block int timeout=30; //倒計時時間
 3     dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
 4     dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);
 5     dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒執行
 6     dispatch_source_set_event_handler(_timer, ^{
 7         if(timeout<=0){ //倒計時結束,關閉
 8             dispatch_source_cancel(_timer);
 9             dispatch_async(dispatch_get_main_queue(), ^{
10                 //設置界面的按鈕顯示 根據本身需求設置
11                 [l_timeButton setTitle:@"發送驗證碼" forState:UIControlStateNormal];
12                 l_timeButton.userInteractionEnabled = YES;
13             });
14         }else{
15             //            int minutes = timeout / 60;
16             int seconds = timeout % 60;
17             NSString *strTime = [NSString stringWithFormat:@"%.2d", seconds];
18             dispatch_async(dispatch_get_main_queue(), ^{
19                 //設置界面的按鈕顯示 根據本身需求設置
20                 NSLog(@"____%@",strTime);
21                 [l_timeButton setTitle:[NSString stringWithFormat:@"%@秒後從新發送",strTime] forState:UIControlStateNormal];
22                 l_timeButton.userInteractionEnabled = NO;
23                 
24             });
25             timeout--;
26             
27         }
28     });
29     dispatch_resume(_timer);
30     
31 }
相關文章
相關標籤/搜索