はじめに
swiftの勉強をしていて、タイマーのカウントダウンについて勉強をしたので、
備忘録として簡単にまとめていきたいと思います。
公式ドキュメントを読み解く
Creates a timer and schedules it on the current run loop in the default mode.
上記メソッドを用いれば、タイマーの機能が使えそうなので、さらに読み進める。
class func scheduledTimer(
timeInterval ti: TimeInterval,
target aTarget: Any,
selector aSelector: Selector,
userInfo: Any?,
repeats yesOrNo: Bool
) -> Timer
timeInterval
にインターバルの時間を、target
にタイマーが経過した際のターゲットを、selector
にタイマーが経過した際に呼び出すセレクタを、userInfo
にはnil
を、
repeates
には繰り返すかをbool値で設定する模様。
というわけで、1秒毎にupdateTimer
関数を呼び出す処理は、以下のようになります。
Timer.scheduledTimer(timeInterval: 1.0, target: self,
selector: #selector(updateTimer), userInfo: nil, repeats: true )
実装例
以下、1秒毎にカウントダウンをする処理となります。
ViewController.swift
import UIKit
class ViewController: UIViewController {
var counter = 10
var timer = Timer()
override func viewDidLoad() {
super.viewDidLoad()
timer = Timer.scheduledTimer(timeInterval: 1.0, target: self,
selector: #selector(updateTimer), userInfo: nil, repeats: true )
}
@objc func updateTimer() {
if counter > 0 {
counter -= 1
} else {
timer.invalidate()
}
}
}
1秒毎にupdateTimer
関数を呼び出し、
counter
が0以上であればcounterをデクリメントし、0以下であればタイマーを無効化します。
このように実装することで、カウントダウン機能を実現することができます。
まとめ
カウントダウン機能をswiftで実装する場合は、scheduledTimer
を使用する。
参考文献