美文网首页
iOS开发倒计时按钮

iOS开发倒计时按钮

作者: 路边的风景呢 | 来源:发表于2019-09-27 10:09 被阅读0次

    这里做一下记录

    //倒计时时间 - 60S

            __blockNSIntegertimeOut =59;

            self.timeOut= timeOut;

            //执行队列

            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(), ^{

                        // 倒计时结束

                        [CodeBtnsetTitle:@"重发验证码"forState:UIControlStateNormal];

                        [CodeBtnsetTitleColor:RGBCOLOR(79, 139, 244) forState:UIControlStateNormal];

                        [CodeBtnsetEnabled:YES];

                        [CodeBtnsetUserInteractionEnabled:YES];

                    });

                }else{

                    //开始计时

                    //剩余秒数 seconds

                    NSIntegerseconds = timeOut %60;

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

                    //主线程设置按钮样式

                    dispatch_async(dispatch_get_main_queue(), ^{

                        [UIViewbeginAnimations:nilcontext:nil];

                        [UIViewsetAnimationDuration:1.0];

                        NSString*title = [NSStringstringWithFormat:@"%@S",strTime];

                        [CodeBtnsetTitle:titleforState:UIControlStateNormal];

                        //              [yourButton.titleLabel setTextAlignment:NSTextAlignmentRight];

                        // 设置按钮title居中 上面注释的方法无效

                        [CodeBtnsetContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];

                        [CodeBtnsetTitleColor:RGBCOLOR(79, 139, 244) forState:UIControlStateNormal];

                        [UIViewcommitAnimations];

                        //计时器间不允许点击

                        [CodeBtnsetUserInteractionEnabled:NO];

                    });

                    timeOut--;

                }

            });

            dispatch_resume(timer);

    相关文章

      网友评论

          本文标题:iOS开发倒计时按钮

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