gpt4 book ai didi

XCode 6 - 延迟循环中的迭代?

转载 作者:行者123 更新时间:2023-11-30 10:20:19 24 4
gpt4 key购买 nike

我正在使用 while 循环测试基本动画。当用户触摸开始按钮时,每次单击该按钮时都会随机出现一个图像。然后我将相同的代码放在 while 循环中,图像似乎没有移动。我认为它只是在迭代中移动得太快,因此看起来没有移动。那么,有没有一种方法(简单或其他)可以延迟循环的速度,以便我可以看到某种程度的过渡?我认为循环的速度就是这样做的原因,因为文本立即输出到标签,因此我知道循环至少正在工作。这是我所拥有的...

@IBAction func btnStart(sender: AnyObject) {

isMoving = true
var i = 0
while (i != 200) //arbitrary number of iterations chosen for this example
{
var x = arc4random_uniform(400)
var y = arc4random_uniform(400)
myButton.center = CGPointMake(CGFloat(x), CGFloat(y));
++i
lblHitAmount.text = String(i) //200 appears instantaneously in label, loop is working
}
}

编辑:

var timer = NSTimer()
var counter = 0

timer = NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: Selector("tolabel"), userInfo: nil, repeats: true)


var i = 0
while (i != 800)
{
var x = arc4random_uniform(400)
var y = arc4random_uniform(400)
btnBug.center = CGPointMake(CGFloat(x), CGFloat(y));
++counter
++i

//lblHitAmount.text = String(i)

}

func tolabel(){
lblHitAmount.text = String(counter++)
}

最佳答案

因此,要理解为什么会出现这种行为,您需要了解运行循环的概念。每个应用程序都有一个运行循环,本质上是一个无限循环。循环的每次迭代都会执行许多操作。其中两个主要任务是处理事件(例如点击按钮)和更新 GUI。 GUI 每个运行循环仅更新一次

您的事件处理代码(用于点击 btnStart)在单个运行循环迭代内运行。无论您将循环延迟多长时间(例如 10 分钟),GUI 都会保持卡住状态,直到完成为止,然后仅显示文本设置的最后一个值。这就是应用程序和程序卡住的原因。他们在运行循环的单次迭代中运行某些内容,不允许执行返回以更新 GUI。

如果您想定期更新文本,您应该查看 NSTimer 。您可以设置一个每 X 秒重复一次的计时器,每次触发计时器时,它将在运行循环的不同迭代中执行,从而允许使用中间值更新 GUI:

@IBAction func btnStart(sender: AnyObject) {
NSTimer.scheduleTimerWithTimeInterval(0.5, target: self, selector: "updateText:", userInfo: nil, repeats: false)
}

func updateText(timer: NSTimer) {
// do something to update lblHitAmount.text
// if you want to execute this again run:
NSTimer.scheduleTimerWithTimeInterval(0.5, target: self, selector: "updateText:", userInfo: nil, repeats: false)
// if you are done with the "loop" don't call scheduleTimerWithTimeInterval again.
}

关于XCode 6 - 延迟循环中的迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27096089/

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