如何给计时器加 5 秒
How to add 5 seconds to a timer
我正在尝试制作一个显示以下内容的计时器 - 小时 : 分钟 : 秒 : 毫秒。这是我的代码:
var timer = NSTimer()
var startTime = NSTimeInterval()
func updateTime()
{
var currentTime = NSDate.timeIntervalSinceReferenceDate()
var elapsedTime : NSTimeInterval = currentTime - startTime
let hours = UInt8(elapsedTime / 3600.0)
elapsedTime -= (NSTimeInterval(hours) * 3600)
let minutes = UInt8(elapsedTime / 60.0)
elapsedTime -= (NSTimeInterval(minutes) * 60)
let seconds = UInt8(elapsedTime)
elapsedTime -= NSTimeInterval(seconds)
let fraction = UInt8(elapsedTime * 100)
let strHours = String(format: "%02d", hours)
let strMinutes = String(format: "%02d", minutes)
let strSeconds = String(format: "%02d", seconds)
let strFraction = String(format: "%02d", fraction)
timeLabel.text = "\(strHours):\(strMinutes):\(strSeconds):\(strFraction)"
}
@IBAction func start(sender: AnyObject) {
if !timer.valid {
let aSelector : Selector = “updateTime”
timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: aSelector, userInfo: nil, repeats: true)
startTime = NSDate.timeIntervalSinceReferenceDate()
}
}
我怎样才能用另一种方法给计时器加 5 秒? (显然我将不得不制作一个全局 var
,但我现在试图保持简单,首先实际添加 5 秒,然后我们会担心全局部分。)我试过 changing/adding 以下:
var seconds = UInt8(elapsedTime)
seconds += 5 // Error here...
elapsedTime -= NSTimeInterval(seconds)
但我收到一条错误消息:
fatal error: floating point value can not be converted to UInt8
because it is less than UInt8.min
将计时器加 5 秒的正确方法是什么?
使计时器无效,然后创建一个新计时器。您不能修改计时器的时间间隔。
就您的错误而言,elapsedTime
可能是负数,这会产生错误。 UInt8.min
是 0
.
计时器不是秒表。 NSTimer
在特定时间触发。
对于像秒表这样的东西,您应该简单地设置一个开始日期。然后,您可以使用设置为一秒的计时器每秒更新一次显示。您将显示当前时间和开始日期之间的差异。
我正在尝试制作一个显示以下内容的计时器 - 小时 : 分钟 : 秒 : 毫秒。这是我的代码:
var timer = NSTimer()
var startTime = NSTimeInterval()
func updateTime()
{
var currentTime = NSDate.timeIntervalSinceReferenceDate()
var elapsedTime : NSTimeInterval = currentTime - startTime
let hours = UInt8(elapsedTime / 3600.0)
elapsedTime -= (NSTimeInterval(hours) * 3600)
let minutes = UInt8(elapsedTime / 60.0)
elapsedTime -= (NSTimeInterval(minutes) * 60)
let seconds = UInt8(elapsedTime)
elapsedTime -= NSTimeInterval(seconds)
let fraction = UInt8(elapsedTime * 100)
let strHours = String(format: "%02d", hours)
let strMinutes = String(format: "%02d", minutes)
let strSeconds = String(format: "%02d", seconds)
let strFraction = String(format: "%02d", fraction)
timeLabel.text = "\(strHours):\(strMinutes):\(strSeconds):\(strFraction)"
}
@IBAction func start(sender: AnyObject) {
if !timer.valid {
let aSelector : Selector = “updateTime”
timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: aSelector, userInfo: nil, repeats: true)
startTime = NSDate.timeIntervalSinceReferenceDate()
}
}
我怎样才能用另一种方法给计时器加 5 秒? (显然我将不得不制作一个全局 var
,但我现在试图保持简单,首先实际添加 5 秒,然后我们会担心全局部分。)我试过 changing/adding 以下:
var seconds = UInt8(elapsedTime)
seconds += 5 // Error here...
elapsedTime -= NSTimeInterval(seconds)
但我收到一条错误消息:
fatal error: floating point value can not be converted to UInt8 because it is less than UInt8.min
将计时器加 5 秒的正确方法是什么?
使计时器无效,然后创建一个新计时器。您不能修改计时器的时间间隔。
就您的错误而言,elapsedTime
可能是负数,这会产生错误。 UInt8.min
是 0
.
计时器不是秒表。 NSTimer
在特定时间触发。
对于像秒表这样的东西,您应该简单地设置一个开始日期。然后,您可以使用设置为一秒的计时器每秒更新一次显示。您将显示当前时间和开始日期之间的差异。