iOS全局倒計時工具CountdownTimer

GitHub: github.com/remember17/…git

全局倒計時工具,能夠維護任意多個倒計時github

當APP從後臺進入前臺的時候,倒計時不受影響,會根據時間線繼續。swift

使用方法:

一. OC版本

  1. CountdownTimer.hCountdownTimer.m文件拖進項目閉包

  2. CountdownTimer.h的枚舉CountDownKey中添加定時器工具

每一個枚舉值表明一個可供使用的定時器ui

// 當須要一個倒計時的時候就在這裏加一個key
typedef enum : NSUInteger {
    test1 = 0,
    test2,
} CountdownKey;
複製代碼
  1. 在須要的地方導入頭文件
#import "CountdownTimer.h"
複製代碼
  1. 開啓一個定時器,

當Block中要使用self的時候,注意循環引用spa

[CountdownTimer startTimerWithKey:test1 count:60 callBack:^(NSInteger count, BOOL isFinished) {
    NSLog(@"倒計時:%ld", count);
    NSLog(@"是否結束倒計時:%d", isFinished);
}];
複製代碼
  1. 手動中止某個定時器.

手動中止或倒計時結束,此定時器都會被移除,除非再次開啓code

[CountdownTimer stopTimerWithKey:test1];
複製代碼
  1. 繼續某個定時器
  • 已經被中止的定時器是沒法繼續的,由於中止的定時器會被移除
  • 這個方法的做用是當開始定時器的頁面被銷燬,又想繼續獲取定時器狀態的時候使用
[CountdownTimer continueTimerWithKey:test1 callBack:^(NSInteger count, BOOL isFinished) {
    NSLog(@"倒計時:%ld", count);
    NSLog(@"是否結束倒計時:%d", isFinished);
}];
複製代碼
  1. 判斷某個定時器是否結束了
BOOL isFinished = [CountdownTimer isFinishedTimerWithKey:test1];
NSLog(@"倒計時是否已經結束:%d", isFinished);
複製代碼

二. Swift版本

  1. CountdownTimer.swift文件拖進項目rem

  2. CountdownTimer.swift的枚舉CountDownKey中添加定時器get

每一個枚舉值表明一個可供使用的定時器

enum CountDownKey: CaseIterable {
  case test1
  case test2
  // 當須要一個倒計時的時候就在這裏加一個key
}
複製代碼
  1. 開啓一個定時器,

當閉包中要使用self的時候,記得加[weak self]

CountdownTimer.startTimer(key: .test1, count: 60) { (count, finish) in
  print(count) // 倒計時數字
  print(finish) // 是否完成倒計時
}
複製代碼
  1. 手動中止某個定時器.

手動中止或倒計時結束,此定時器都會被移除,除非再次開啓

CountdownTimer.stopTimer(key: .test1)
複製代碼
  1. 繼續某個定時器
  • 已經被中止的定時器是沒法繼續的,由於中止的定時器會被移除
  • 這個方法的做用是當開始定時器的頁面被銷燬,又想繼續獲取定時器狀態的時候使用
CountdownTimer.continueTimer(key: .test1) { (count, finish) in
  print(count) // 倒計時數字
  print(finish) // 是否完成倒計時
}
複製代碼

6 判斷某個定時器是否結束了

let isFinished = CountdownTimer.isFinishedTimer(key: .test1)
print(isFinished)
複製代碼

個人GitHub: github.com/remember17

相關文章
相關標籤/搜索