swiftでストップウォッチに計算機能を追加
swiftでストップウォッチアプリを作りました。
そのアプリに以下の機能を追加しようと思います。
一つの作業が完了するまでの時間(秒)を計測した上で、
その時間をもとに1時間あたりではいくつの作業が完了するのか、
計算して画面に表示させる機能。
(計算式:3600 / 計測した秒数 = 1時間あたりの作業数)
どのように書けば、上記のような機能を追加できるでしょうか?
現状のソースコードは以下のようになります。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var timerLabel: UILabel!
@IBOutlet weak var startButton: UIButton!
@IBOutlet weak var stopButton: UIButton!
@IBOutlet weak var resetButton: UIButton!
@IBOutlet weak var page: UILabel!
var startTime: NSTimeInterval? = nil
var timer: NSTimer?
var elapsedTime: Double = 0.0
override func viewDidLoad() {
super.viewDidLoad()
setButtonEnabled(true, stop: false, reset: false)
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func setButtonEnabled(start:Bool, stop:Bool, reset:Bool) {
self.startButton.enabled = start
self.stopButton.enabled = stop
self.resetButton.enabled = reset
}
func update() {
if let t = self.startTime {
let time: Double = NSDate.timeIntervalSinceReferenceDate() - t + self.elapsedTime
let sec: Int = Int(time)
let msec: Int = Int((time - Double(sec)) * 100.0)
self.timerLabel.text = NSString(format: "%02d:%02d:%02d", sec/60, sec%60, msec) as String
}
}
@IBAction func startTimer(sender: AnyObject) {
setButtonEnabled(false, stop: true, reset: false)
self.startTime = NSDate.timeIntervalSinceReferenceDate() // 2001/1/1 0:0:0
self.timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: Selector("update"), userInfo: nil, repeats: true)
}
@IBAction func stopTimer(sender: AnyObject) {
setButtonEnabled(true, stop: false, reset: true)
if let t = self.startTime {
self.elapsedTime += NSDate.timeIntervalSinceReferenceDate() - t
self.timer?.invalidate()
self.timer = nil
}
}
@IBAction func resetTimer(sender: AnyObject) {
setButtonEnabled(true, stop: false, reset: false)
self.elapsedTime = 0.0
self.startTime = nil
self.timerLabel.text = "00:00:00"
}
}
お礼
回答ありがとうございました。 教えていただいたサイトを見たのですが、知識不足で十分理解ができませんでした。requestImageDataForAssetをキーワードにいろいろ調べてみたのですが、解決しませんでした。また、質問させていただきます。