【发布时间】:2016-02-23 18:55:11
【问题描述】:
我对 Xcode (swift) 很陌生,简而言之,我正在尝试制作一个以秒和小数倒计时的倒计时计时器。
它应该倒计时,但是,例如,当我从 13 秒开始倒计时时,手动计时时确实需要 23 秒。 这可能是一个简单的解决方案,但我尝试了很多东西,但无法弄清楚如何解决它。
这是我的代码:
import UIKit
var timer = NSTimer()
var seconds = 13
var milliseconds = 0
class ViewController: UIViewController {
@IBOutlet weak var Label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
Label.text = "\(seconds).\(milliseconds)"
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func Button(sender: AnyObject) {
timer = NSTimer.scheduledTimerWithTimeInterval(0.001, target: self, selector: Selector("countDownfunction"), userInfo: nil, repeats: true)
}
func countDownfunction() {
Label.text = "\(seconds).\(milliseconds)"
if milliseconds == 0 {
seconds -= 1
milliseconds = 100
} else {
milliseconds -= 1
}
}
}
编辑:新代码仍然没有弄清楚,但我认为是正确的方式,我怎样才能像我一样减去/比较两个字符串:Label.text = (countdownSeconds - elapsedTime) 它给了我一个错误,我不能'-'两个字符串,我不知道如何比较两秒。谢谢
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var Label: UILabel!
var startTime = NSDate.timeIntervalSinceReferenceDate()
var currentTime = NSDate.timeIntervalSinceReferenceDate()
var elapsedTime = String()
var differenceTime = String()
var countdownSeconds = String()
override func viewDidLoad() {
super.viewDidLoad()
// 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.
}
@IBAction func Button(sender: AnyObject) {
countdownSeconds = String(10)
startTime = NSDate.timeIntervalSinceReferenceDate()
NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: Selector("countDownUpdateMethod"), userInfo: nil, repeats: true)
}
func countDownUpdateMethod(){
currentTime = NSDate.timeIntervalSinceReferenceDate()
elapsedTime = String(currentTime - startTime )
Label.text = (countdownSeconds - elapsedTime)
}
}
【问题讨论】:
-
NSTimer的分辨率不够高
标签: ios swift nstimer countdown