iOS 做验证码发送 定时器 避免按钮闪烁
博客专区 > Daniel_s 的博客 > 博客详情
iOS 做验证码发送 定时器 避免按钮闪烁
Daniel_s 发表于5个月前
iOS 做验证码发送 定时器 避免按钮闪烁
  • 发表于 5个月前
  • 阅读 12
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

今天做一个功能,一开始将某按钮置灰,然后倒计时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

标签: 按钮闪烁
共有 人打赏支持
粉丝 12
博文 155
码字总数 4133
×
Daniel_s
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: