[Object-C]定时器管理button的title 闪现问题

定时器管理button的title 闪现问题

出现场景:

定时器管理button的title,我们最常见的应用就是关于验证码.当我们点击按钮之前, 按钮会显示获取验证码, 当我们点击获取验证码之后, 按钮会以此显示x秒之后重新获取验证码.
实现的效果原理:一般来说设置一个方法,设置一个定时器,每秒循坏执行一次, 改变button的title显示.

遇到问题:

     button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    button.frame=CGRectMake(SCREEN_WIDTH -  STARTX - 120,3 * STARTX + 90 - 1, 120, 47);
    [button setBackgroundImage:[UIImage imageNamed:@"register-securityCode-N"] forState:UIControlStateNormal];
     button.titleLabel.font = [UIFont systemFontOfSize:16];
    [button setTitle:@"获取验证码" forState:UIControlStateNormal];
     button.titleLabel.font =  [UIFont boldSystemFontOfSize:[self p6changep4:19 SubtractNum:3]];
    [button setTintColor:[UIColor whiteColor]];
    [button addTarget:self action:@selector(getSecurityCode:) forControlEvents:UIControlEventTouchUpInside];
    [mainScrollView addSubview:button];
- (void)getSecurityCode:(id)sender
{
//    if ([[userNameTextField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length] == 0) {
//        ProgressFailedWith(@"手机号不能为空哦");
//        return;
//    }
//    if (![self isMobileNumber:userNameTextField.text]) {
//        ProgressFailedWith(@"手机号码格式不正确");
//        return;
//    }
    [self startTimer];
}
- (void)startTimer
{
    secondsCountDown = 60;//60秒倒计时
    countDownTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timeFireMethod) userInfo:nil repeats:YES];
}

-(void)timeFireMethod
{
    secondsCountDown--;
    if(secondsCountDown==0){
        [button setTitle:@"获取验证码" forState:UIControlStateNormal];
        button.titleLabel.font = [UIFont boldSystemFontOfSize:[self p6changep4:19 SubtractNum:3]];
       [button setBackgroundImage:[UIImage imageNamed:@"register-securityCode-N"] forState:UIControlStateNormal];
        button.userInteractionEnabled = YES;
        [countDownTimer invalidate];
        countDownTimer = nil;
    } else {
        button.userInteractionEnabled = NO;
        [button setBackgroundImage:[UIImage imageNamed:@"register-securityCode-Y"] forState:UIControlStateNormal];
        button.titleLabel.font = [UIFont systemFontOfSize:14];
        [button setTitle:[NSString stringWithFormat:@"%i秒后重新发送",secondsCountDown] forState:UIControlStateNormal];
    }
}
这样做的会出现的问题就是: x秒之后重新发送这几个字每秒都会闪一次. 

解决办法:

   我们看到对于button 的设置我们设置的圆角.合理我们需要设置为自定义.即

 button = [UIButton buttonWithType:UIButtonTypeCustom];
这样闪现的效果就没有了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值