ios 短信按钮倒计时

2018-12-12  本文已影响0人  老公123

先声明UIButton

UIButton*firstBtn;

  firstBtn = [[UIButton alloc] initWithFrame:CGRectMake(200, 160, 60, 40)];

    [firstBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

    [firstBtn setTitle:@"60" forState:UIControlStateNormal];

    [firstBtn addTarget:self action:@selector(tagehend) forControlEvents:UIControlEventAllEvents];

    [self.view addSubview:firstBtn];

-(void)tagehend{

    __blockNSIntegertimeOut =59;

    //执行队列

    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

    //计时器 -》dispatch_source_set_timer自动生成

    dispatch_source_ttimer =dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER,0,0, queue);

    dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC, 0 * NSEC_PER_SEC);

    dispatch_source_set_event_handler(timer, ^{

        if(timeOut <=0) {

            dispatch_source_cancel(timer);

            //主线程设置按钮样式-》

            dispatch_async(dispatch_get_main_queue(), ^{

                [self->firstBtnsetTitle:@"发送验证码"forState:UIControlStateNormal];

                [self->firstBtn setUserInteractionEnabled:YES];

            });

        }else{

            //开始计时

            //剩余秒数 seconds

            NSIntegerseconds = timeOut %60;

            NSString*strTime = [NSStringstringWithFormat:@"%.1ld",seconds];

            //主线程设置按钮样式

            dispatch_async(dispatch_get_main_queue(), ^{

                [UIViewbeginAnimations:nilcontext:nil];

                [UIViewsetAnimationDuration:1.0];

                [self->firstBtn setTitle:[NSString stringWithFormat:@"%@",strTime] forState:UIControlStateNormal];

                [UIViewcommitAnimations];

                //计时器件不允许点击

                [self->firstBtn setUserInteractionEnabled:NO];

            });

            timeOut--;

        }

    });

    dispatch_resume(timer);

}

上一篇下一篇

猜你喜欢

热点阅读