[iOSアプリ開発][Xcode 8] ストップウォッチを実装する

Swift でストップウォッチを作り、リセットボタンでリセットできるようにする。今回は表示される時間は秒とし、小数第2位まで表示する。

(1)プロジェクトを作成する。

(2)Main.storyboard をクリック。時間表示用のラベルとして、Object library の Label を画面にドラッグアンドドロップする。ボタンは「00.00」などと表示するようにしておくといい。

(3)スタート・ストップ用のボタンとして、Object library の Button を画面にドラッグアンドドロップする。

(4)リセットボタンとして、Object library の Button を画面にドラッグアンドドロップする。ボタンは「リセット」などと名前を変えておくといいだろう。

(5)右上の円が二つ重なった Show the Assistant editor アイコンをクリックし、エディタを表示する。

(6)2のラベルをエディタ(ViewController.swift)に右クリックでドラッグアンドドロップ。以下のように設定する。

Connection;Outlet
Name ;StopWatchLabel
Type ;UILabel
Storage ;Weak

(7)3のボタンをエディタ(ViewController.swift)に右クリックでドラッグアンドドロップ。以下のように設定する。

Connection;Action
Name ;StartStopButton
Type ;AnyObject
Event:Touch Up Inside
Arguments:Sender

(8)以下のようにコードを書く。

    @IBOutlet weak var StopWatchLabel: UILabel!
    
    
    var timer = Timer()
    var seconds:Int = 0
    var fractions:Int = 0
    var stopwatchString: String = ""
    var startStopWatch:Bool = true
    
    
    @IBAction func StartStopButton(_ sender: AnyObject) {
        if startStopWatch == true {
            timer = Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: #selector(ThirdViewController.updateStopwatch), userInfo: nil, repeats: true)
            startStopWatch = false
        }else {
            timer.invalidate()
            startStopWatch = true
        }
    }
    
    func updateStopwatch() {
        fractions += 1
        if fractions == 100 {
            seconds += 1
            fractions = 0
        }
        let fractionsString = fractions > 9 ? "\(fractions)" : "0\(fractions)"
        let secondsString = seconds > 9 ? "\(seconds)" : "0\(seconds)"
        
        stopwatchString = "\(secondsString).\(fractionsString)"
        StopWatchLabel.text = stopwatchString
    }

(9)4のリセットボタンをエディタ(ViewController.swift)に右クリックでドラッグアンドドロップ。以下のように設定する。

Connection;Action
Name ;Reset
Type ;AnyObject
Event:Touch Up Inside
Arguments:Sender

(10)以下のようにコードを書く。

@IBAction func Reset(_ sender: AnyObject) {
        fractions = 0
        StopWatchLabel.text = "00.00"
    }

参考:
SwiftでなんちゃってStopWatchを作ってみた(その1) | bick.xyz
http://bick.xyz/archives/230

SwiftでなんちゃってStopWatchを作ってみた(その2):ミリ秒を表示しよう | bick.xyz
http://bick.xyz/archives/233

iOS 8 Swift – Make a stopwatch with full functionality – Part 1 / 3 – YouTube
https://www.youtube.com/watch?v=82SXeAmZwk8