我想在我的应用程序中插入一个计时器,但我不知道如何以及以何种方式可以做到这一点。计时器将从 60 秒开始,到 0 秒结束,怎么办?
问问题
268 次
1 回答
3
首先记下倒计时开始的日期。
设置一个重复的 NSTimer用于显示目的,间隔设置为您向用户显示的最小单位(例如,如果您正在倒计时,请将其设置为 1 分钟 = 60 秒;如果您正在倒计时,请设置到 1 秒)。
(Cocoa 意义上的“定时器”不是指倒计时。NSTimer 不会向上或向下计数到预先设置的限制;它要么触发一次,要么以固定的时间间隔定期触发,直到你停止它。)
每次计时器触发时,获取当前日期并找出自开始倒计时以来已经过去了多长时间。从所需的倒计时长度中减去此间隔。
如果减法结果为正,则继续倒计时;用剩余时间更新您的显示。如果结果为零或负数,则倒计时时间已用完;使计时器无效并更新您的显示器以显示剩余时间为零。
这种方法使您可以处理几种不同的情况:
- 如果这是一个 iOS 应用程序,您可以在应用程序进入后台或将终止时取消计时器,然后在应用程序再次进入前台时重新创建它。由于您的显示基于倒计时开始后的时间,而不是只是定期递减计数器,因此即使在您的应用程序未激活时经过超过 1 个间隔,即使倒计时在此期间到期,它也是正确的。说起来……</li>
- 在 Mac 和 iOS 上,您都可以在倒计时到期时安排本地通知。我认为您的应用程序甚至不必再运行了(但我还没有测试过)。
- 您可以轻松更改显示以显示已用时间而不是剩余时间。
- 您可以随意或多或少地更新显示(例如,显示十分之一秒的时间流逝,或根据剩余时间调整显示的单位)。
于 2012-12-29T08:58:30.750 回答