(自定義控件)按鈕倒計時--可以用于獲取驗證碼的倒計時

緣由

對于做這個封裝的目的就是想制造一個簡單易用無風(fēng)險的驗證碼倒計時控件吧

  • 便于在多個項目使用,網(wǎng)絡(luò)上也有很多類似的 一般分兩種 :

    • 1.使用NSTimer作為定時器

    • 2.使用GCD作為定時器

  • 1.NSTimer 問題最多的一個,據(jù)我了解 Timer會 retain target(有方法 處理這個 HWWeakTimer,具體實現(xiàn)我就不累贅了 請參考,issue還是有的),一直到 倒計時結(jié)束,還會在 app 進(jìn)入后臺以后 出現(xiàn)暫停倒計時等等異常。

  • 2.GCD使用起來真的是有點繁瑣,這里沒有多做研究,應(yīng)該是可以的 但是相對來說比較繁瑣

于是乎,想到了 ReactiveCocoa ,RAC處理這些問題真的是殺雞焉用宰牛刀的趕腳啊,很輕松,而且 不會 retain 任何類,ViewController dealloc 以后 也會跟隨dealloc 停止倒計時。

Talk is cheap,我們直接上硬菜 地址 ,需要引入ReactiveObjC, 目前已經(jīng)在兩個上線項目中使用了。

使用示例:

[button countDownChanging:^NSString *(DBCountDownButton *countDownButton, NSUInteger second) {
  return [NSString stringWithFormat:@"剩余%lu秒可以重新獲取",(unsigned long)second];
}];
[button countDownFinished:^NSString *(DBCountDownButton *countDownButton, NSUInteger second) {
  //  倒計時結(jié)束設(shè)置button title
  return @"點擊重新獲取";
}];
@weakify(button);
[[button rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(__kindof UIControl * _Nullable x) {
  @strongify(button)      
  //  時間
  [button startCountDownWithSecond:10];
}];

Git地址
添加Cocoapods支持~ pod 'DBCountDownButton' 盡情的享用吧

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容