gpt4 book ai didi

ios - NSTimer/定时器持续时间和 UI 更新

转载 作者:行者123 更新时间:2023-11-28 09:54:11 24 4
gpt4 key购买 nike

可能是一个简单的问题,但是,我似乎无法想出一个优雅的方法。

我想设计一个简单的应用程序,它允许将计时器设置为持续时间(比如 1 分钟),在该持续时间之后计时器应该到期,计时器应该更新 UI 的持续时间每秒。

因此,如果计时器设置为一分钟,计时器应该触发,每秒更新一次 UI(通过调用方法),然后在 1 分钟后最终失效。

我的难题是,我可以设置一个 scheduledTimerWithInterval,它会在计时器间隔上调用一个方法。如果我将这一分钟定为 1 分钟,我可以在一分钟后调用一个方法以使计时器无效,但似乎没有一种机制可以在这一分钟期间执行调用。

你能给我一些指导吗?

最佳答案

我会做这样的事情:

1:声明一个timer和一个计数器:

var timer = Timer()
var counter = 0

2:创建一个新函数,例如startEverySecond以一秒为间隔启动定时器,该函数在 60 秒后调用,将调用 1 分钟,然后失效:

func startEverySecond() {
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(everySecond), userInfo: nil, repeats: true)
}

func everySecond(){
if counter == 60{
timer.invalidate()
}
counter = counter + 1
print("Second")
}

3:处理定时器的启动和停止:

// Start with 60 second interval
timer = Timer.scheduledTimer(timeInterval: 60, target: self, selector: #selector(startEverySecond), userInfo: nil, repeats: false)

// Stop
timer.invalidate()

所以基本上,当您启动计时器时,它会以 60 秒开始计时,完成后它会调用函数 startEverySecond。这将更改计时器以调用 everySecond每秒运行 1 分钟。要停止计时器,只需调用 timer.invalidate()

关于ios - NSTimer/定时器持续时间和 UI 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40062829/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com