美文网首页
iOS验证码倒数计时60秒

iOS验证码倒数计时60秒

作者: plantseeds | 来源:发表于2016-07-17 15:28 被阅读1078次
    计时3秒效果图
    Untitled.gif
    代码
    //获取验证码
    - (IBAction)getVerifiedCode:(UIButton *)sender
    {
        //验证码倒数计时
        __block int leftTime = 60;
        sender.backgroundColor = UIColorFromHex(0xBDBDBD);
        [sender setTitle:[NSString stringWithFormat:@"%i秒", leftTime] forState:UIControlStateDisabled];
        sender.enabled = NO;
        [NSTimer bk_scheduledTimerWithTimeInterval:1 block:^(NSTimer *timer) {
            if (leftTime == 0) {
                sender.backgroundColor = UIColorFromHex(0xF48D2F);
                sender.enabled = YES;
                [sender setTitle:@"获取验证码" forState:UIControlStateNormal];
                //计时完成,销毁定时器
                [timer invalidate];
            }
            leftTime--;
            [sender setTitle:[NSString stringWithFormat:@"%i秒", leftTime] forState:UIControlStateDisabled];
        } repeats:YES];
    }
    
    1. 使用了第三方库 BlocksKit,直接把控件需要调用或触发的方法写在block中。
      代码中这句 [NSTimer bk_scheduledTimerWithTimeInterval: block:] 是BlocksKit对NSTimer的分类中的方法,不仅如此,BlocksKit还有对UIButton、NSArray、NSDictionary...的block方法,十分强大。

    2. 用__block修饰leftTime,因为一般情况下,在block中是不能改变外部变量的值,但是在变量前用 __block 声明后就可以。

    3. 计时完成别忘了销毁定时器。

    相关文章

      网友评论

          本文标题:iOS验证码倒数计时60秒

          本文链接:https://www.haomeiwen.com/subject/cazujttx.html