iOS之用NSTimer定时刷新按钮的文字,避免按钮闪烁的办法

今天做一个功能,一开始将某按钮置灰,然后倒计时60秒。每秒钟都刷新按钮的文字,倒计时结束后,使按钮可用。很快就做好了,不过发现一个问题,就是按钮会闪烁,跟星星似的。我的代码是:

 _countDown = 60;
    UIColor *color = self.canSend ? [UIColor colorWithRed:40.0/255.0 green:90.0/255.0f blue:190.0/255.0f alpha:1.0f] : [UIColor grayColor];
    self.smsButton = [UIButton createButtonWithStyle:UIButtonTypeRoundedRect
                                              withFrame:CGRectMake(80, 0, 100, 30)
                                              withTitle:NSLocalizedString(@"重发验证码", nil)
                                         withTitleColor:color
                                     withBackgroudColor:nil
                                        withNormalImage:nil
                                   withHighlightedImage:nil
                               withNormalBackgroudImage:nil
                         withHighlightedBackgroundImage:nil
                                              withTarge:self
                                             withAction:@selector(startTimer:)
                                           actionHandle:^(UIButton *sender) {
                                               
                                           }];

- (void)startTimer {
    [self.smsButton setEnabled:NO];
    _timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];
}


- (void)onTimer {
    if (_countDown > 0) {
        [self.smsButton setTitle:[NSString stringWithFormat:@"%d秒重新获取", _countDown] forState:UIControlStateDisabled];
        _countDown--;
    } else {
        _countDown = 60;
        [_timer invalidate];
        _timer = nil;
        [self.smsButton setTitle:@"60秒重新获取" forState:UIControlStateDisabled];
        [self.smsButton setTitle:@"重发验证码" forState:UIControlStateNormal];
        [self.smsButton setEnabled:YES];
    }
}


解决方法:

将UIButton的类型由system改为custom就OK










你可能感兴趣的:(iOS之用NSTimer定时刷新按钮的文字,避免按钮闪烁的办法)