ReactiveCocoa 實現 按鈕倒數計時
- (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]];
__blockid 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);
}];
}
相關文章
- Js Jquery 實現的按鈕倒數計時整理JSjQuery
- jQuery實現的按鈕可用倒數計時效果jQuery
- 【JavaScript】使用js實現傳送郵箱驗證碼,按鈕倒數計時JavaScriptJS
- 按鈕倒數計時可用效果例項程式碼
- JavaScript簡訊重發按鈕可用倒數計時JavaScript
- 按鈕倒數計時指定秒數可用程式碼例項
- 傳送簡訊驗證,後按鈕倒數計時,防止重新整理倒數計時失效
- 註冊協議閱讀倒數計時按鈕可用程式碼協議
- 面向Vue新人:寫一個簡單的倒數計時按鈕Vue
- js實現活動倒數計時JS
- Flutter倒數計時/計時器的實現Flutter
- js實現指定時間倒數計時JS
- 安卓開發之封裝顯示倒數計時按鈕控制元件安卓封裝控制元件
- jquery實現60秒倒數計時jQuery
- 用宏實現PPT倒數計時
- js倒數計時 實現傳送驗證碼倒數計時60sJS
- js按鈕點選後需要倒數計時才能可能用程式碼例項JS
- jquery 實現 點選按鈕後倒數計時效果,多用於實現傳送手機驗證碼、郵箱驗證碼jQuery
- JavaScript 前端倒數計時糾偏實現JavaScript前端
- js實現驗證碼倒數計時JS
- Android 實現計數或者倒數計時 計時器 用法DemoAndroid
- Jquery 實現頁面倒數計時的功能jQuery
- Android實現計時與倒數計時的幾種方法Android
- 點選按鈕實現數字增加效果
- Android 倒數計時的五種實現方式Android
- 微信開發之小程式實現倒數計時
- Ionic Angular 實現驗證碼倒數計時功能Angular
- 直播小程式原始碼,vue實現時間倒數計時原始碼Vue
- 利用css變數實現按鈕懸浮效果CSS變數
- 直播系統原始碼,實現倒數計時,定時任務原始碼
- js程式碼實現倒數計時秒殺的效果JS
- JavaScript倒數計時JavaScript
- js——倒數計時JS
- JS倒數計時JS
- 直播平臺搭建,計時和倒數計時功能的分別實現
- 線上直播系統原始碼,開屏首頁廣告點選跳過按鈕跳過倒數計時原始碼
- 倒數計時指定時間之後實現頁面跳轉效果
- 簡單實現時間倒數計時與伺服器同步效果伺服器