美文网首页
倒计时按钮

倒计时按钮

作者: Darren_xu | 来源:发表于2016-07-14 13:56 被阅读11次

    实现方式是通过Category

    - (void)startWithTime:(NSInteger)timeLine title:(NSString *)title countDownTitle:(NSString *)subTitle mainColor:(UIColor *)mColor countColor:(UIColor *)color {
    
        //倒计时时间
        __block NSInteger timeOut = 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(), ^{
                    self.backgroundColor = mColor;
                    [self setTitle:title forState:UIControlStateNormal];
                    self.enabled = YES;
                    self.userInteractionEnabled = YES;
                });
            } else {
                int seconds = timeOut % 60;
                NSString *timeStr = [NSString stringWithFormat:@"%0.2d", seconds];
                dispatch_async(dispatch_get_main_queue(), ^{
                    self.backgroundColor = color;
                    NSString *txt = [NSString stringWithFormat:subTitle,timeStr];
                    self.titleLabel.text = txt;
                    [self setTitle:txt forState:UIControlStateNormal];
                    self.userInteractionEnabled = NO;
                });
                timeOut--;
            }
        });
        dispatch_resume(_timer);
    }
    
    

    相关文章

      网友评论

          本文标题:倒计时按钮

          本文链接:https://www.haomeiwen.com/subject/hevejttx.html