0
私はカウントダウンタイマー機能を作成したいのですが、ユーザーは同じボタンを押して一時停止して再開できます。私は、これにはoneが回答していることを含めて、いくつかの同様の質問があることを知っています。しかし、私はまだ立ち往生しています(2日目)。無効になっているにもかかわらず、私のタイマーはまだ刻々と変化しているようです。ここで開始、一時停止、再開NSTimer Swift
は私のコードです:
@IBOutlet weak var timerLabel: UILabel!
var duration: NSTimeInterval { return Double((exercise!.duration))! * 60 }
var interval: Double?
var timer = NSTimer()
var startTime = NSDate.timeIntervalSinceReferenceDate()
var elapsedTime: Double?
var timeLeft: Double?
var inProgress = false
var isPaused = false
var completionStatus = false
@IBAction func pressStart(sender: UIButton) {
if inProgress{
if isPaused {
resumeAnimation(timeLeftShapeLayer)
sender.setTitle("Pause", forState: UIControlState.Normal)
print("pressed resume, with \(timeLeft!) time left")
startTime = NSDate.timeIntervalSinceReferenceDate()
timer = NSTimer.scheduledTimerWithTimeInterval(timeLeft!, target: self, selector: #selector(PerformExerciseViewController.updateTime), userInfo: nil, repeats: false)
isPaused = false
} else {
pauseAnimation(timeLeftShapeLayer)
isPaused = true
sender.setTitle("Resume", forState: UIControlState.Normal)
elapsedTime = NSDate.timeIntervalSinceReferenceDate() - startTime
timeLeft = duration - elapsedTime!
timer.invalidate()
print("pressed pause, with \(timeLeft!) time left")
}
} else {
drawTimeLeftShape()
timeLeftShapeLayer.addAnimation(strokeIt, forKey: nil)
sender.setTitle("Pause", forState: UIControlState.Normal)
startTime = NSDate.timeIntervalSinceReferenceDate()
timer = NSTimer.scheduledTimerWithTimeInterval(duration, target: self, selector: #selector(PerformExerciseViewController.updateTime), userInfo: nil, repeats: false)
inProgress = true
isPaused = false
}
時間を印刷する場合:(。長いここで一時停止し、多分10秒)
押す一時停止、左56.3997309803963時間で
押された履歴書は、と56.3997309803963時間が残っています(超短再生時間0.1秒)
押された一時停止、47.3651859760284時間が残っています(一時停止中にカウントされた時間のようです
ありがとうございました!