美文网首页
iOS 倒计时效果的实现

iOS 倒计时效果的实现

作者: codeing小牛 | 来源:发表于2017-01-20 15:00 被阅读230次

    // 添加定时器

    -(void)addTimer{
    
        self.timer = [NSTimer timerWithTimeInterval:1 target:self  selector:@selector(countDown) userInfo:nil repeats:YES];
    }
    

    // 倒计时操作

    -(void)countDown{
        
        self.count = self.count - 1 ;
        NSString *title = [NSString stringWithFormat:@"%ds",self.count];
        [self.getBVertifyBtn setTitle:title forState:UIControlStateNormal];
        
        // 此处条件如果设为== 可能会导致计时为负数
        if (self.count <= 0) {
            
            self.getBVertifyBtn.enabled = YES;
            [self.timer setFireDate:[NSDate distantFuture]];
            [self.getBVertifyBtn setTitle:@"获取验证码" forState:UIControlStateNormal];
        }
    }
    

    // 定时器的销毁

    -(void)dealloc{
        
        if ([self.timer isValid]) {
            
            [self.timer invalidate];
        }
            self.timer = nil ;
    }
    

    点击按钮获取验证码

    // 设置倒计时起始值
    self.count = 60 ;
      [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSDefaultRunLoopMode];
        [self.timer setFireDate:[NSDate distantPast]];
        self.getBVertifyBtn.enabled = NO ;
    // 请求服务器下发验证码到用户
    // 请求成功 && 下发验证码成功(不做任何操作)
    // 请求失败 或者 获取验证码失败
    [self.timer setFireDate:[NSDate distantFuture]];
                    self.getBVertifyBtn.enabled = YES ;
                    [self.getBVertifyBtn setTitle:@"获取验证码" forState:UIControlStateNormal];
    

    注意:如果获取验证码的按钮是通过sb 或xib 创建的要 设置按钮的类型为custem
    否则 切换数字时会有闪烁的效果

    相关文章

      网友评论

          本文标题:iOS 倒计时效果的实现

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