用RAC实现登陆界面的倒计时

当需要手机注册或者验证的需求 有个1分钟的倒计时  具体代码如下
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.remainSeconds = 60;
    self.startCheckTimer = 1;
    self.label = [[UILabel alloc]initWithFrame:CGRectMake(50, 80, 200, 20)] ;
    self.label.backgroundColor = [UIColor redColor];
    [self.view addSubview:self.label];
    [self setTime];
}
- (void)setTime{
    @weakify(self);
    RACSignal* signal = [[[RACSignal interval:1
                                  onScheduler:[RACScheduler mainThreadScheduler]] startWith:[NSDate date]] map:^id(NSDate* value) {
        @strongify(self);
        if(self.remainSeconds > 0 && self.startCheckTimer){
            self.remainSeconds = self.remainSeconds - 1;
            if(self.remainSeconds == 0){
                self.startCheckTimer = 0;
            }
        }
        NSString *text = [NSString stringWithFormat:@"未收到验证码?请稍等%d秒",self.remainSeconds];
        return text; }];
    [signal subscribeNext:^(NSString* x) {
        @strongify(self);
        self.label.text = x;
    }];
    RAC(self.reSendButton, enabled) = [RACSignal
                                       combineLatest:@[
                                                       RACObserve(self, remainSeconds),
                                                       RACObserve(self, startCheckTimer)
                                                       ]
                                       reduce:^id(NSNumber* remain, NSNumber* startCheck) {
                                           return@( remain.intValue == 0 && _startCheckTimer == 0);
                                       }];
}
- (void)setResendButton:button
{
    _reSendButton = button;
    @weakify(self);
    [[self.reSendButton rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(id x) {
        @strongify(self);
        self.reSendButton.enabled = FALSE;
        self.remainSeconds = 60;
        self.startCheckTimer = 1;
//        [self startResendVerifyCode];
    }];
}

以上简单的实现了倒计时60s
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值