http://blog.csdn.net/lvxiangan/article/details/49276981
今天做一个功能,一开始将某按钮置灰,然后倒计时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