|
31
|
| Pandu Arif Septian · 技术社区 · 11 年前 |
|
1
52
您需要使其无效并重新创建。然后可以使用
|
|
|
2
9
要开始:
要继续:
要暂停:
这对我有用。诀窍是不要寻找类似的东西
|
|
|
3
9
开始
暂停
要重置
“label”是输出上的计时器。 |
|
|
4
8
我刚解决了游戏中的一个类似问题,找到了一个简单的解决方案。 首先,我应该像其他人一样指出,Timer和NSTimer没有暂停功能。您必须使用Timer.invalidate()停止计时器。使计时器无效后,必须再次初始化它以启动计时器。引用自 https://developer.apple.com/documentation/foundation/timer ,函数.invalidate()-
下面是我们如何通过保存计时器在再次启动之前的剩余秒数来暂停计时器。
注: 在获取fireDate之前,不要使计时器无效()。调用invalidate()后,计时器似乎将fireDate重置为2001-01-01 00:00:00+0000。 第二条注释: 计时器可能会在其设置的fireDate之后启动。这将导致一个负数,这将默认计时器在0.1毫秒后运行。 https://developer.apple.com/documentation/foundation/timer/1412416-scheduledtimer |
|
|
5
4
为了阻止它
重新开始
|
|
|
6
4
您无法恢复计时器。 与其继续,不如创建一个新的计时器。
|
|
|
7
3
尽管这里展示的解决方案很好,但我认为缺少一个重要的洞察力。就像这里很多人解释的那样,计时器无效()和重新创建是最好的选择。但有人会说你可以这样做:
更容易实施,但效率会降低。 出于能源影响的原因,苹果提倡尽可能避免使用计时器,并倾向于使用事件通知。 如果您确实需要使用计时器,则应通过使当前计时器无效来有效地实现暂停。在此处阅读《苹果能效指南》中有关计时器的建议: https://developer.apple.com/library/content/documentation/Performance/Conceptual/EnergyGuide-iOS/MinimizeTimerUse.html |
|
|
8
2
瑞士法郎3 全球宣言:
视图DidLoad
触发的IBACTION:
处理以下事项的函数:
|
|
|
9
0
暂停计时器:timer.invalidate() 和 恢复计时器:重新创建计时器。工作很好。
|
|
|
Sagar Chauhan · 反转时间标签 8 年前 |
|
|
Mounica · 如何在swift3中用时间减去日期 8 年前 |
|
|
Jules · Obj-C,NSTimer调度在循环中,模式正确吗? 8 年前 |
|
|
user6354073 · 如何在iOS中集成拍卖倒计时应用程序 8 年前 |
|
|
UdayM · 如何清除NSTimer内存? 10 年前 |
|
|
SwiftStudier · playAtTime是如何工作的?(快进) 10 年前 |