我有一个标签,我想在其中显示系统时间。我希望我的标签与它同步,即标签总是与状态栏中显示的时间相同。
我使用以下代码段将标签的文本设置为系统时间:
let date = NSDate()
let formatter = NSDateFormatter()
formatter.dateFormat = "hh:mm"
label.text = formatter.stringFromDate(date)但我不知道什么时候该运行这段代码。我以为我可以每分钟运行一次,但这并不总是有效的。考虑到这一点:
用户在系统时间08:00:30启动应用程序,运行上述代码。状态栏中显示的时间与我的标签中显示的时间相同: 08:00。
在系统时间08:01:00,状态栏中显示的时间更改为08:01。但是自从应用程序启动以来,1分钟还没有过去,标签的文本仍然是08:00。
这就是为什么我说每分钟做一次并不总是有效的。
我还考虑使用NSTimer来每秒钟或毫秒运行该代码。但这是不是太过了,会导致性能问题呢?
有什么“合适”的方法吗?
发布于 2016-09-01 07:34:12
您可以按您所说的每分钟调用函数,但在第一次运行时,您可以在30秒后运行它(系统时间为08:00: 30 ),然后在1分钟后继续调用,在这种情况下,我认为它们是相同的。
发布于 2016-09-01 07:33:54
U可以使用NSTimer每60秒刷新一次时间。此外,在第一次刷新情况下,u可以记录经过多少秒,然后将间隔设置为第二个剩余时间。
代码可以如下:
func refreshTime(firstRefresh: Bool) {
let date = NSDate()
let formatter = NSDateFormatter()
formatter.dateFormat = "hh:mm"
let time = formatter.stringFromDate(date)
print(time)
var interval = 60.0
if firstRefresh{
let formatter_second = NSDateFormatter()
formatter_second.dateFormat = "ss"
let second = formatter_second.stringFromDate(date)
interval = 60 - Double(second)!
}
let _ = NSTimer.scheduledTimerWithTimeInterval(interval, target: self, selector: #selector(GameScene.refreshTime(_:)), userInfo: false, repeats: false)
}https://stackoverflow.com/questions/39264917
复制相似问题