GCD 로 카운트다운 하기

더 읽 기
__block int timeout = 60;	//      
    
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 <= 1) { //      
        dispatch_source_cancel(_timer);
        dispatch_async(dispatch_get_main_queue(), ^{
            getCodeButton.backgroundColor = RGBACOLOR(232, 154, 37, 1);
            getCodeButton.userInteractionEnabled = YES;
            [getCodeButton setTitle:@"     " forState:UIControlStateNormal];
            [getCodeButton setTitle:@"     " forState:UIControlStateHighlighted];
        });
    } else {
        dispatch_async(dispatch_get_main_queue(), ^{
            getCodeButton.backgroundColor = [UIColor lightGrayColor];
            getCodeButton.userInteractionEnabled = NO;
            [getCodeButton setTitle:[NSString stringWithFormat:@"%d", timeout] forState:UIControlStateNormal];
        });
            
        timeout--;
    }
});
    
dispatch_resume(_timer);

좋은 웹페이지 즐겨찾기