首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使我的UILabel与系统时间同步?

如何使我的UILabel与系统时间同步?
EN

Stack Overflow用户
提问于 2016-09-01 07:11:36
回答 2查看 88关注 0票数 5

我有一个标签,我想在其中显示系统时间。我希望我的标签与它同步,即标签总是与状态栏中显示的时间相同。

我使用以下代码段将标签的文本设置为系统时间:

代码语言:javascript
复制
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来每秒钟或毫秒运行该代码。但这是不是太过了,会导致性能问题呢?

有什么“合适”的方法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-01 07:34:12

您可以按您所说的每分钟调用函数,但在第一次运行时,您可以在30秒后运行它(系统时间为08:00: 30 ),然后在1分钟后继续调用,在这种情况下,我认为它们是相同的。

票数 3
EN

Stack Overflow用户

发布于 2016-09-01 07:33:54

U可以使用NSTimer每60秒刷新一次时间。此外,在第一次刷新情况下,u可以记录经过多少秒,然后将间隔设置为第二个剩余时间。

代码可以如下:

代码语言:javascript
复制
 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)

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39264917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档