注:本人第一次在簡(jiǎn)書上發(fā)表文章,共勉
Update 12-20 2016
運(yùn)行中,會(huì)一直走,但是真機(jī)推到后臺(tái)不會(huì)變,如果需要實(shí)現(xiàn)同時(shí),Google到一個(gè)(已測(cè)試):
如果有好的方法也可以留言告訴我,不勝感激...
CFAbsoluteTimestart =CFAbsoluteTimeGetCurrent();
if((start -_time) >1.5&& [strTimeintValue] >1&& [strTimeintValue] <30) {
intnum = (int)ceil(start -_time);
timeout = timeout - num +1;
strTime = [NSStringstringWithFormat:@"%zd", [strTimeintValue] - num];
timeout--;
if(timeout <0) {
return;
}
}
_time=CFAbsoluteTimeGetCurrent();
加在
NSLog(@"____%@", strTime);
[_btnsetTitle:[NSStringstringWithFormat:@"%@",strTime]forState:UIControlStateNormal];
_btn.backgroundColor= [UIColorgrayColor];
_btn.userInteractionEnabled=NO;
前
Update? 07.15.2016
親測(cè),退到后臺(tái)在進(jìn)入定時(shí)器仍然再走,時(shí)間對(duì)應(yīng)減少!別再問了,最后提供一個(gè)Demo? ps: 親們,遇到問題多動(dòng)手,學(xué)習(xí)新知識(shí),多動(dòng)手!
1.最終實(shí)現(xiàn)的鮮果如下圖所示:

2.主要是在Button的Event里面添加下列代碼:
? ? - (IBAction)sendEvent:(id)sender {
__block int timeout=30; //倒計(jì)時(shí)時(shí)間
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); //每秒執(zhí)行
dispatch_source_set_event_handler(_timer, ^{
if(timeout<=0){ //倒計(jì)時(shí)結(jié)束,關(guān)閉
dispatch_source_cancel(_timer);
dispatch_async(dispatch_get_main_queue(), ^{
//設(shè)置界面的按鈕顯示 根據(jù)自己需求設(shè)置
[_countdownButton setTitle:@"發(fā)送驗(yàn)證碼" forState:UIControlStateNormal];
_countdownButton.backgroundColor = [UIColor orangeColor];
_countdownButton.userInteractionEnabled = YES;
});
}else{
//? ? ? ? ? ? int minutes = timeout / 60;
int seconds = timeout % 59;
NSString *strTime = [NSString stringWithFormat:@"%.2d", seconds];
dispatch_async(dispatch_get_main_queue(), ^{
//設(shè)置界面的按鈕顯示 根據(jù)自己需求設(shè)置
NSLog(@"____%@",strTime);
[_countdownButton setTitle:[NSString stringWithFormat:@"%@",strTime] forState:UIControlStateNormal];
_countdownButton.backgroundColor = [UIColor grayColor];
_countdownButton.userInteractionEnabled = NO;
});
timeout--;
}
});
dispatch_resume(_timer);
}
(Update? 07.15.2016)(Update? 07.15.2016)