您的位置:首页 > 移动开发 > IOS开发

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

2016-08-10 17:24 295 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: