GitHub: github.com/remember17/…git
全局倒計時工具,能夠維護任意多個倒計時github
當APP從後臺進入前臺的時候,倒計時不受影響,會根據時間線繼續。swift
把CountdownTimer.h
和CountdownTimer.m
文件拖進項目閉包
在CountdownTimer.h
的枚舉CountDownKey
中添加定時器工具
每一個枚舉值表明一個可供使用的定時器ui
// 當須要一個倒計時的時候就在這裏加一個key
typedef enum : NSUInteger {
test1 = 0,
test2,
} CountdownKey;
複製代碼
#import "CountdownTimer.h"
複製代碼
當Block中要使用self的時候,注意循環引用spa
[CountdownTimer startTimerWithKey:test1 count:60 callBack:^(NSInteger count, BOOL isFinished) {
NSLog(@"倒計時:%ld", count);
NSLog(@"是否結束倒計時:%d", isFinished);
}];
複製代碼
手動中止或倒計時結束,此定時器都會被移除,除非再次開啓code
[CountdownTimer stopTimerWithKey:test1];
複製代碼
- 已經被中止的定時器是沒法繼續的,由於中止的定時器會被移除
- 這個方法的做用是當開始定時器的頁面被銷燬,又想繼續獲取定時器狀態的時候使用
[CountdownTimer continueTimerWithKey:test1 callBack:^(NSInteger count, BOOL isFinished) {
NSLog(@"倒計時:%ld", count);
NSLog(@"是否結束倒計時:%d", isFinished);
}];
複製代碼
BOOL isFinished = [CountdownTimer isFinishedTimerWithKey:test1];
NSLog(@"倒計時是否已經結束:%d", isFinished);
複製代碼
把CountdownTimer.swift
文件拖進項目rem
在CountdownTimer.swift
的枚舉CountDownKey
中添加定時器get
每一個枚舉值表明一個可供使用的定時器
enum CountDownKey: CaseIterable {
case test1
case test2
// 當須要一個倒計時的時候就在這裏加一個key
}
複製代碼
當閉包中要使用self的時候,記得加[weak self]
CountdownTimer.startTimer(key: .test1, count: 60) { (count, finish) in
print(count) // 倒計時數字
print(finish) // 是否完成倒計時
}
複製代碼
手動中止或倒計時結束,此定時器都會被移除,除非再次開啓
CountdownTimer.stopTimer(key: .test1)
複製代碼
- 已經被中止的定時器是沒法繼續的,由於中止的定時器會被移除
- 這個方法的做用是當開始定時器的頁面被銷燬,又想繼續獲取定時器狀態的時候使用
CountdownTimer.continueTimer(key: .test1) { (count, finish) in
print(count) // 倒計時數字
print(finish) // 是否完成倒計時
}
複製代碼
6 判斷某個定時器是否結束了
let isFinished = CountdownTimer.isFinishedTimer(key: .test1)
print(isFinished)
複製代碼
個人GitHub: github.com/remember17