/**
* 倒计时按钮
*
* @paramtimeLine 倒计时总时间
* @paramtitle 还没倒计时的title
* @paramsubTitle 倒计时中的子名字,如时、分
* @parammColor 还没倒计时的颜色
* @paramcolor 倒计时中的颜色
*/
- (void)startWithTime:(NSInteger)timeLine title:(NSString*)title countDownTitle:(NSString*)subTitle mainColor:(UIColor*)mColor countColor:(UIColor*)color {
[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil];
__weak typeof(self) weakSelf = self;
//倒计时时间
__blockNSIntegertimeOut = timeLine;
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, ^{
//倒计时结束,关闭
if(timeOut <=0) {
dispatch_source_cancel(_timer);
dispatch_async(dispatch_get_main_queue(), ^{
weakSelf.backgroundColor= mColor;
[weakSelfsetTitle:title forState:UIControlStateNormal];
weakSelf.userInteractionEnabled=YES;
});
}else{
intallTime = (int)timeLine +1;
intseconds = timeOut % allTime;
NSString*timeStr = [NSStringstringWithFormat:@"%0.2d", seconds];
dispatch_async(dispatch_get_main_queue(), ^{
weakSelf.backgroundColor= color;
[weakSelfsetTitle:[NSString stringWithFormat:@"%@%@",timeStr,subTitle] forState:UIControlStateNormal];
weakSelf.userInteractionEnabled=NO;
});
timeOut--;
}
});
dispatch_resume(_timer);
}
网友评论