美文网首页
UIButton倒计时

UIButton倒计时

作者: 王正魁 | 来源:发表于2019-03-13 12:04 被阅读0次

    /**

    *  倒计时按钮

    *

    @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);

    }

    相关文章

      网友评论

          本文标题:UIButton倒计时

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