Swift4でストップウォッチアプリを作る

Blog

 

今回は、簡単なストップウォッチアプリを作ります。

 

環境

  • Xcode9
  • Swift4
  • NSData

 

UI

  1. Labelを三つ追加。それぞれを「00」「00」「00」に変更。
  2. Buttonを二つ追加。それぞれを「START」「RESET」に変更。

 

 

 

 

コネクション

 

  1. LabelをOutlet接続。左からName:「minute」「seconds」「miniSeconds」に設定。
  2. ButtonをAction接続。Name:「start」「reset」に設定。

 

 

 

 

コーディング

 

    weak var timer: Timer!          //追加
    var startTime = Date()          //追加
  @IBAction func start(_ sender: Any) {
        
        if timer != nil{
            timer.invalidate()
        }
        timer = Timer.scheduledTimer(                           //追加
            timeInterval: 0.01,
            target: self,
            selector: #selector(self.timerCounter),
            userInfo: nil,
            repeats: true)
        
        startTime = Date()
        
    }
    @IBAction func reset(_ sender: Any) {
        
        if timer != nil{
            timer.invalidate()
            
            minute.text = "00"              //追加
            seconds.text = "00"
            miniSeconds.text = "00"
        }
        
    }
//    ここから
    @objc func timerCounter() {
        
        let currentTime = Date().timeIntervalSince(startTime)
        
        let minutelo = (Int)(fmod((currentTime/60), 60))
        
        let second = (Int)(fmod(currentTime, 60))
        
        let msec = (Int)((currentTime - floor(currentTime))*100)
        
        let sMinute = String(format:"%02d", minutelo)
        let sSecond = String(format:"%02d", second)
        let sMsec = String(format:"%02d", msec)
        
        minute.text = sMinute
        seconds.text = sSecond
        miniSeconds.text = sMsec
        
    }
    
//    ここまで追加

 

 

全コード

 

import UIKit

class ViewController: UIViewController {
    
    weak var timer: Timer!          //追加
    var startTime = Date()          //追加

    
    
    @IBOutlet weak var minute: UILabel!
    
    @IBOutlet weak var seconds: UILabel!
    
    @IBOutlet weak var miniSeconds: UILabel!
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    

    @IBAction func start(_ sender: Any) {
        
        if timer != nil{
            timer.invalidate()
        }
        timer = Timer.scheduledTimer(                           //追加
            timeInterval: 0.01,
            target: self,
            selector: #selector(self.timerCounter),
            userInfo: nil,
            repeats: true)
        
        startTime = Date()
        
    }
    
    
    @IBAction func reset(_ sender: Any) {
        
        if timer != nil{
            timer.invalidate()
            
            minute.text = "00"              //追加
            seconds.text = "00"
            miniSeconds.text = "00"
        }
        
    }
    
//    ここから
    @objc func timerCounter() {
        
        let currentTime = Date().timeIntervalSince(startTime)
        
        let minutelo = (Int)(fmod((currentTime/60), 60))
        
        let second = (Int)(fmod(currentTime, 60))
        
        let msec = (Int)((currentTime - floor(currentTime))*100)
        
        let sMinute = String(format:"%02d", minutelo)
        let sSecond = String(format:"%02d", second)
        let sMsec = String(format:"%02d", msec)
        
        minute.text = sMinute
        seconds.text = sSecond
        miniSeconds.text = sMsec
        
    }
    
//    ここまで追加
    
    
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

}

 

実行結果

 

 

 

 

以上で「Swift4でストップウォッチアプリを作る」の説明を終わります。

 

🤗

 

コメント