RAC 實現(xiàn)按鈕倒計時

RAC 實現(xiàn)按鈕倒計時

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor whiteColor];
    self.title=@"一個閱讀";
    [self testOne];
}
-(void)testOne{
    UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];
    [btn setTitle:@"按鈕" forState:UIControlStateNormal];
    [btn setBackgroundColor:[UIColor colorWithRed:58/255.0f green:157/255.0f blue:255/255.0f alpha:1.0f]];
    btn.frame=  CGRectMake(30,100,100,30);
    btn.titleLabel.font = [UIFont systemFontOfSize:18.0f];
    btn.layer.cornerRadius = 6;
    btn.layer.masksToBounds = YES;
    [self.view addSubview:btn];
    RACSignal* (^countBlock)(UIButton*) = ^RACSignal*(UIButton* btn){
        RACSignal* countsingal =  [[[[RACSignal interval:1
                                              onScheduler:[RACScheduler mainThreadScheduler]]
                                      startWith:[NSDatedate]]
                                     scanWithStart:@(10)reduce:^id(NSNumber*running,idnext) {
                                         NSLog(@"running = %@",running);
                                         return@(running.integerValue-1);
                                     }]takeUntilBlock:^BOOL(NSNumber*x) {
                                         returnx.integerValue<0;
                                     }];
        returncountsingal;
    };

    RACSignal* (^CountBlock)(UIButton*) = ^RACSignal*(UIButton* btn){
        RACSignal* timeSigal =  [countBlock(btn) map:^id(NSNumber* value) {
            return [NSString  stringWithFormat:@"剩余%@",value];
        }];
        btn.enabled=NO;
        [btn setBackgroundColor:[UIColor grayColor]];
        __block id saveSubscriber =nil;
        RACSignal*resetStringSignal =
        [RACSignal createSignal:^RACDisposable *(id<RACSubscriber>  subscriber) {
            saveSubscriber = subscriber;
            returnnil;
        }];

        [timeSigal subscribeCompleted:^{
            btn.enabled=YES;
            [btn setBackgroundColor:[UIColor colorWithRed:58/255.0f green:157/255.0f blue:255/255.0f alpha:1.0f]];
            [saveSubscriber sendNext:@"按鈕"];
            [saveSubscriber sendCompleted];
            NSLog(@"timer singal complte");
        }];
        [btnrac_liftSelector:@selector(setTitle:forState:)
                  withSignals:[RACSignalmerge:@[timeSigal,resetStringSignal]],
         [RACSignal return:@(UIControlStateNormal)], nil];
        returntimeSigal;
    };
    btn.rac_command = [[RACCommand alloc] initWithSignalBlock:^RACSignal *(id input) {
        returnCountBlock(btn);
    }];
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容