我需要创建一个从30到0的倒计时,当它达到0时,回到30,我还需要与真实时钟相关的秒数,例如,如果我回到视图(即使我关闭了应用程序),我不应该看到倒计时总是从30开始,而是应该在基于所经过的时间的位置(在0-30的范围内)。
我得到的最接近的是:
let date = Date()
let calendar = Calendar.current
globalSeconds = calendar.component(.second, from: date)
print(globalSeconds)实现的主要问题是它基于60秒,而不是30秒。在这个例子中,这些值是递增的,我需要它们递减。
发布于 2019-06-13 23:50:43
您可以在30秒后创建一个date对象。然后将当前日期与该对象进行比较,以确定计时器应该在哪里。
我是在一个游乐场上做的,你需要根据你的特定需求来修改它。
let futureDate = Date().addingTimeInterval(30).timeIntervalSince1970
var secondsLeft = TimeInterval(30)
Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { timer in
    secondsLeft = futureDate - Date().timeIntervalSince1970
    print(secondsLeft)
    if secondsLeft <= 0 {
        timer.invalidate()
    }
}输出也需要进行一些清理
28.993669986724854
27.993721961975098
26.994149923324585
25.993762016296387
24.993871927261353
23.99389910697937
22.993980169296265
21.99391198158264
20.994942903518677
19.9939968585968
18.995089054107666
17.994417905807495
16.994072198867798
15.994122982025146
14.994197130203247
13.994181871414185
12.99530816078186
11.99462604522705
10.994287014007568
9.994328022003174
8.99430799484253
7.995084047317505
6.994402170181274
5.99443793296814
4.995491027832031
3.9945170879364014
2.9945571422576904
1.9946701526641846
0.9946119785308838
-0.005316019058227539https://stackoverflow.com/questions/56583857
复制相似问题