[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
Recent Posts
Archives