[Swift3]5秒タイマーを作る

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る
Swift

Timerクラスを利用した、簡易的なタイマーを作成する。

タイマー作動中はボタンを押下できなくするなど、UI周りの操作も組み込む。

今回作るもの

ボタンとラベルを用意し、ボタンを押すと5秒間のタイマーが作動する。タイマー作動中はボタンを非活性にし、タイマー終了時にはアラートで知らせる。

変数・アウトレットの設定

タイマー処理を行うためのTimerクラスのインスタンス、startボタンを押した時刻の記録用の変数を用意する。また、ボタン・ラベルの両方をアウトレット接続しておく。

Startボタンを押した時の処理

ボタンが押下されたら、以下の処理を行う。

  • タイマーの開始時刻を記録する
  • 残り時間のラベルを更新する
  • タイマー処理を登録する(0.01秒ごとに、自分で用意するupdateLabel()を呼び出す)
  • Startボタンを非活性にする

0.01秒ごとに呼び出されるラベル更新処理

タイマーの開始時刻と現在の時刻の差から、タイマー開始から何秒経ったかを計算し、ラベルに反映する。
残り0秒となった時点でinvalidateメソッドによりタイマー処理を停止し、Startボタンを押下できるように設定し、タイマー完了のアラートを表示して処理を終了する。

なお、ラベルのフォントは等幅フォントにしておくと数字による表示幅の差がなくなりきれいに表示される。

完成したソース

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

SNSでもご購読できます。