#はじめに
某プログラミング学習サイトでの学習記録を記します。
#共通操作
・Ctrl + I:インデント修正
#01:割愛
#02:部品配置
・複数の部品にまとめて制約を付ける場合は、
・対象となる部品を全て選ぶ
・Embed InからStack Viewに登録する
・View Controller Scene > View Controller > View > Stack Viewを選択する
・位置の制約を付ける
#03:部品をコードに接続する
・時間表示用のラベル
・ボタン3つ(Start,Stop, Reset)
#04:ボタン押下でタイマーを開始する
@IBAction func (ボタン名) (_ sendor:Any) {
Timer.scheduledTimer(
timeInterval: 0.01, // 実行間隔[秒]
target: self, // タイマーで実行するメソッドのある場所
selector: #selector(self.update), // 実行するメソッド名
userinfo:nil, // selectorに渡す情報。なければnil
repeats:true) // 繰り返し実行するかどうか
// selectorはobjective-cの仕様のため先頭に@objcが必要らしい
@objc func update() {
print(Date.timeIntervalSinceReferenceDate);
// 2001年からの経過秒数を取得
}
#05:経過秒数の算出
・開始時刻の変数定義
var startTime:TimeInterval? = nil;
・startボタン押下時に開始時刻を取得
@IBAction func startTimer(_ sender:Any) {
self.startTime = Date.timeIntervalSinceRefernceDate // 開始時刻
Timer.ShceduledTimer(略)
// 後略
}
・経過時間を取得
@objc func update() {
if let startTime = self.startTime {
// 経過時刻を取得
let t:Doublee = Date.timeIntervalSinceReferenceDate - startTime
}
}
#06:経過秒数のラベル表示
・文字列返還
String(format:[C言語と同じ書式指定], [変数をコンマ区切り])
(例)
String(format:"%02d:%02d", min, sec)
#07:ストップウォッチのStopとReset
・タイマーを停止するには、起動時のTimerオブジェクトが必要になる
・タイマー変数の生成
var timer = Timer()
・起動時の戻り値を取得
self.timer = Timer.scheduledTimer() // 既存の起動関数の戻り値を取得
・Stop時の動作
self.timer.invalidate() タイマー停止
・Reset時の動作
self.startTime = nil
self.timerLabel.text = "00:00:00"
#08:Stop後の再開
・Stop後にStartしたとき、Stop時の時間から再開する
変数としてelapsedTime(double)を宣言
・Stop時の時刻を取得する
if let strtTime = self.startTime { // 開始時刻を取得済であれば
self.elapsedTime += Date.timeIntervalSinceReferenceDate - startTime // 経過時刻を取得する
}
・経過時刻の取得関数を修正(経過時刻を加算)
let t = Date.timeIntervalSinceReferenceDate - startTime + self.elapsedTime
#09:ボタンの有効/無効を切換える
・Startボタン押下 start:無効、stop:有効、Reset:無効
・Stop ボタン押下 start:有効、stop:無効、Reset:有効
・Resetボタン押下 start:有効、stop:無効、Reset:無効
・self.(ボタン名).enabled = true / falseを切換える関数を作成する
・関数を、各タイミングで呼び出す