iOS 简单的倒计时封装

本文介绍了一种使用Objective-C实现的倒计时按钮功能,该功能通过NSTimer定时器进行计时更新,并在达到指定时间后禁用按钮,直至倒计时结束。文章详细展示了如何初始化计时、设置定时器、更新UI以及停止计时的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

- (void)start

{

    _time = 60;

    __block CountdownButton *blockSelf = self;

    if (_timer) {

        _timer = nil;

    }

      dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        self.enabled = NO;

        blockSelf->_timer=[NSTimer scheduledTimerWithTimeInterval:1.0

                                                           target:blockSelf

                                                         selector:@selector(timeAction:)

                                                         userInfo:nil

                                                          repeats:YES] ;

        [[NSRunLoop currentRunLoop] addTimer:blockSelf->_timer forMode:NSDefaultRunLoopMode];

        [[NSRunLoop currentRunLoop] run];

    });


    

}


- (void)timeAction:(NSTimer *)timer

{

    --_time ;

    NSString *timeStr = [NSString stringWithFormat:@"%d 秒后重发",_time];

    [self setTitle:timeStr forState:UIControlStateDisabled];

    

    if (_time == 0) {

        [self stop];

    }


}


- (void)stop

{

    [_timer invalidate];

    _timer = nil;

    _time = 60;

    self.enabled = YES;

    [self setTitle:@"获取短信验证码" forState:UIControlStateNormal];


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值