ios – 使用Swift中的NSTimer在几个十进制插槽中倒计时

ios – 使用Swift中的NSTimer在几个十进制插槽中倒计时,第1张

概述我想制作一个以10.0000000开始计时器的应用程序,我希望它完美倒计时 到目前为止,这是我的代码: import UIKitclass ViewController: UIViewController { @IBOutlet weak var labelTime: UILabel! var counter = 10.0000000 var labelValue 我想制作一个以10.0000000开始计时器的应用程序,我希望它完美倒计时
到目前为止,这是我的代码:

import UIKitclass VIEwController: UIVIEwController {    @IBOutlet weak var labelTime: UILabel!    var counter = 10.0000000    var labelValue: Double {        get {            return NSNumberFormatter().numberFromString(labelTime.text!)!.doubleValue        }        set {            labelTime.text = "\(newValue)"        }    }    overrIDe func vIEwDIDLoad() {        super.vIEwDIDLoad()        // Do any additional setup after loading the vIEw,typically from a nib.        labelValue = counter        var timer = NSTimer.scheduledTimerWithTimeInterval(0.0000001,target: self,selector: ("update"),userInfo: nil,repeats: true)    }    func update(){        labelValue -= 0.0000001    }}

会发生什么事情,我的倒计时非常慢,它只是不起作用,需要1小时才能达到0秒,而不是仅仅10秒.有任何想法吗?我应该对代码做出哪些更改?
谢谢

解决方法 定时器不是超精确的,NSTimer的分辨率大约是1/50秒.

此外,iPhone屏幕的刷新率为60帧/秒,因此以更快的速度运行计时器完全没有意义.

而不是每次触发时都尝试使用计时器递减某些内容,而是创建一个每秒触发50次的计时器,并让它使用时钟数学来根据剩余时间更新显示:

var futureTime: NSTimeInterval overrIDe func vIEwDIDLoad() {    super.vIEwDIDLoad()    labelValue = counter    //FutureTime is a value 10 seconds in the future.    futureTime = NSDate.timeIntervalSinceReferenceDate() + 10.0     var timer = NSTimer.scheduledTimerWithTimeInterval(      0.02,selector: ("update:"),repeats: true)}func update(timer: NSTimer){  let timeRemaining = futureTime - NSDate.timeIntervalSinceReferenceDate()  if timeRemaining > 0.0  {    label.text = String(format: "%.07f",timeRemaining)  }  else  {    timer.invalIDate()    //Force the label to 0.0000000 at the end    label.text = String(format: "%.07f",0.0)  }}
总结

以上是内存溢出为你收集整理的ios – 使用Swift中的NSTimer在几个十进制插槽中倒计时全部内容,希望文章能够帮你解决ios – 使用Swift中的NSTimer在几个十进制插槽中倒计时所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1000310.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存