[iPhone] Timerを使ってストップウォッチを作る

こちらはTimerを使って簡単なstopwatchを作ってみました。


Swift 5.1
Xcode 11.4

Timer

API Reference

では色々な使用法を想定していますが、scheduledTimerを使うやり方が分かりやすいでしょう。

Timerの基本的使い方

スケジューリングしない方法もありますが、今回は2つ目のメソッドを使ってみます。

ViewController.swift


いきなりアプリ起動とともにTimerを使う事は無いかもしれませんが、viewDidLoadでは早いこともあるのでviewDidAppearでTimerのスケジュールをして開始した方がいいようです。

fire()は使わなくても起動します(入っていてもエラーにはなりませんが)

Logはこのようになりました。


0.01sec間隔ですが0.001secのズレがあります。余り厳しくタイムカウントをするとバッテリー消費が激しいでしょうね

Stopwatchサンプルコード

Timerを使ってStopwatchアプリを作ってみます。
インターバルでカウントアップしてそれを元にタイムを表示してもいいのですが、ちょっと厳密にディレーが起きても開始時間からのタイムを取り出すようにしてみました。

ViewController.swif


タイムをformatterで1つのLabelにしようと思ったのですが、Font幅が一定で無いと微妙に表示位置が動きます。冗長的ですがラベルを分けて表示させました。

後はstoryboardでボタンとタイムを表示するラベルを紐付けます。それぞれフォントサイズや背景色を適宜合わせて出来上がりです。

サンプル動画

References:
Timer — Foundation | Apple Developer Documentation
Date — Foundation | Apple Developer Documentation