iOS 倒计时效果的实现

2017-01-20  本文已影响230人  codeing小牛

// 添加定时器

-(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
否则 切换数字时会有闪烁的效果

上一篇下一篇

猜你喜欢

热点阅读