アプリにタイマーを挿入したいのですが、どのように、どのようにこれを実行できるのかわかりません。タイマーは60秒で開始し、0秒で終了しますが、どうすればよいですか?
質問する
268 次
1 に答える
3
カウントダウンが開始された日付に注意することから始めます。
表示目的で繰り返し NSTimerを設定し、間隔をユーザーに表示する最小単位に設定します (たとえば、分をカウントダウンする場合は、1 分 = 60 秒に設定します。秒をカウントダウンする場合は、 1 秒まで)。
(Cocoa の意味での「タイマー」はカウントダウンを意味しません。NSTimer は、事前に設定された制限までカウントアップまたはカウントダウンしません。一度起動するか、停止するまで一定の間隔で定期的に起動します。)
タイマーが起動するたびに、現在の日付を取得し、カウントダウンを開始してからの経過時間を調べます。目的のカウントダウンの長さからこの間隔を引きます。
減算の結果が正の場合、カウントダウンが進行します。残り時間で表示を更新します。結果がゼロまたは負の場合、カウントダウン時間は終了しています。タイマーを無効にし、表示を更新して残り時間をゼロにします。
このアプローチにより、いくつかの異なるケースを処理できるようになります。
- これが iOS アプリの場合は、アプリがバックグラウンドになるか終了するときにタイマーをキャンセルし、アプリが再びフォアグラウンドになったときにタイマーを再作成できます。表示は、カウンターを定期的に減らすのではなく、カウントダウンが開始されてからの時間に基づいているため、アプリがアクティブでない間に 1 間隔を超えて経過した場合や、その間にカウントダウンが期限切れになった場合でも正しく表示されます。そういえば…</li>
- Mac と iOS の両方で、カウントダウンの有効期限にローカル通知をスケジュールできます。その場合、アプリを実行する必要さえないと思います(ただし、テストしていません)。
- 残り時間ではなく経過時間を表示するようにディスプレイを簡単に変更できます。
- 表示は自由に頻繁に更新できます (たとえば、10 分の 1 秒単位で表示したり、残り時間に合わせて表示単位を調整したりできます)。
于 2012-12-29T08:58:30.750 に答える