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ā)布平臺,僅提供信息存儲服務。