美文网首页
ios 倒计时

ios 倒计时

作者: 笑看红尘_e2bf | 来源:发表于2018-06-14 15:36 被阅读0次

    倒计时总是要上网去找 直接放个笔记在这得了

    新建UIbutton子类,然后用这个button就好了

    .m中

    #define SendCode @"发送验证码"

    @interface PEMCodeButton()

    {

        dispatch_source_t _timer;

    }

    @end

    @implementation PEMCodeButton

    - (void) startSend

    {

        [self openCountdown:NO];

    }

    - (void)endSending

    {

        dispatch_source_cancel(_timer);

        dispatch_async(dispatch_get_main_queue(), ^{

            //设置按钮的样式

            [self setTitle:SendCode forState:UIControlStateNormal];

            self.userInteractionEnabled = YES;

        });

    }

    // 开启倒计时效果

    -(void)openCountdown:(BOOL) isFail{

        __blockNSIntegertime =59;//倒计时时间

        dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

        _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(time <=0|| isFail){//倒计时结束,关闭

                dispatch_source_cancel(_timer);

                dispatch_async(dispatch_get_main_queue(), ^{

                    //设置按钮的样式

                    [self setTitle:SendCode forState:UIControlStateNormal];

                    self.userInteractionEnabled = YES;

                });

            }else{

                intseconds = time %60;

                dispatch_async(dispatch_get_main_queue(), ^{

                    //设置按钮显示读秒效果

                    [self setTitle:[NSString stringWithFormat:@"重新发送(%.2d)", seconds] forState:UIControlStateNormal];

                    self.userInteractionEnabled = NO;

                });

                time--;

            }

        });

        dispatch_resume(_timer);

    }

    .h中

    - (void) startSend;//开始倒计时

    - (void)endSending;//请求服务器失败关闭倒计时

    相关文章

      网友评论

          本文标题:ios 倒计时

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