UIButton倒计时

/**

*  倒计时按钮

*

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

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容