LoginSignup
0
1

More than 3 years have passed since last update.

iPhoneアプリ学習:ストップウォッチ

Last updated at Posted at 2020-07-07

はじめに

某プログラミング学習サイトでの学習記録を記します。

共通操作

・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を切換える関数を作成する
・関数を、各タイミングで呼び出す

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1