NSTimer和CountDown

时间:2012-12-28 20:43:22

标签: objective-c cocoa

我想在我的应用程序中插入一个计时器,但我不知道如何以及以何种方式执行此操作。计时器将在60秒开始并在0秒结束,怎么办呢?

1 个答案:

答案 0 :(得分:3)

首先注明倒计时开始的日期。

设置repeating NSTimer用于显示目的,间隔设置为您向用户显示的最小单位(例如,如果您计算分钟数,则将其设置为1分钟= 60秒;如果您'重新计算秒数,将其设置为1秒。

(可可意义上的“计时器”并不是指倒计时.NSTimer不会提前或降低到预先设定的限制;它会触发一次,或者以固定间隔周期性地发射,直到你停止它)。

每次计时器触发时,都会获取当前日期,并在您开始倒计时后查找how long it's been。从所需的倒计时长度中减去此间隔。

如果减法结果为正,则倒计时进行;使用剩余时间更新显示。如果结果为零或为负,则倒计时时间已用完;使计时器无效并更新显示屏以显示零剩余时间。

这种方法可以帮助您处理几种不同的情况:

  • 如果这是iOS应用,您可以在应用进入后台时取消定时器或终止,然后在应用再次到达前台时重新创建。由于您的显示基于自倒计时开始以来的时间,而不是仅仅周期性地减少计数器,即使在您的应用未激活时超过1个间隔,并且即使倒计时在此期间到期,它也将是正确的。说到哪......
  • 在Mac和iOS上,您可以在倒计时到期时间安排本地通知。我认为你的应用程序甚至不必再运行了,然后(但我没有测试过)。
  • 您可以轻松更改显示以显示已过去的时间而非剩余时间。
  • 您可以或多或少地随意更新显示(例如,显示十分之一秒,或将显示的单位调整为剩余时间)。