美文网首页
iOS Button 倒计时

iOS Button 倒计时

作者: 叫我周杰伦 | 来源:发表于2020-01-09 16:16 被阅读0次

    实现思路:

    创建按钮, 添加点击方法;

    用NSTimer定时器, 每秒执行一次, 定时改变Button的title,改变Button的样式, 设置Button不可点击;

    若倒计时结束, 定时器关闭, 并改变Button的样式, 可以点击;

    代码如下:

    在按钮的点击事件里调用该方法.

      [selfopenCountdown:5interval:^(NSIntegercurrentTime) {

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

                 [self.followButtonsetTitle:[NSStringstringWithFormat:@"%@(%zd)",confirmToFollow,currentTime]forState:UIControlStateNormal];

              }finish:^{

                  //设置按钮的样式

                  [self.followButton setTitle:confirmToFollow forState:UIControlStateNormal];

                  //关注

                  if(self.followButtonClickBlock){

                      self.followButtonClickBlock();

                  }

              }];

    #pragma mark-- 开启倒计时效果

    -(void)openCountdown:(NSInteger)intervalinterval:(void(^)(NSIntegercurrentTime))currentIntervalfinish:(dispatch_block_t)finish{

        __blockNSIntegertime = interval;//倒计时时间

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

                dispatch_source_cancel(_timer);

                dispatch_async(dispatch_get_main_queue(), ^{

                    if(finish){//设置按钮的样式

                        finish();

                    }

                });

            }else{

                intseconds = time %60;

                dispatch_async(dispatch_get_main_queue(), ^{

                    if(currentInterval){//设置按钮的样式

                        currentInterval(seconds);

                    }

                });

                time--;

            }

        });

        dispatch_resume(_timer);

    }

    注意点:

    我们在创建Button时, 要设置Button的样式:

    当type为: UIButtonTypeCustom时 , 是读秒的效果.

    当type为: 其他时, 是一闪一闪的效果.

    相关文章

      网友评论

          本文标题:iOS Button 倒计时

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