Xcode Swift iOS 应用:添加延迟

6
我正在制作一个简单的问答游戏,希望在游戏中添加一些小延迟。现在当我选择答案时,游戏会立即跳转到下一个问题。现在我想改变按钮的颜色0.1秒,然后加载下一个问题。
我尝试了sleep函数,但它只添加了延迟,没有颜色变化,并且我不能选择比一秒钟更短的时间间隔,因为它只接受整数值。
以下是代码:
sender.backgroundColor = UIColor.greenColor()
sleep(1)
sender.backgroundColor = UIColor.whiteColor()

我需要用什么代替sleep才能得到我想要的结果呢?

谢谢。

4个回答

5
如果您只需要一个睡眠功能,只需使用:sleep()函数。
NSThread.sleepForTimeInterval(1)

我尝试将这行代码放在两个改变颜色的指令之间,它增加了延迟但没有改变颜色。 - GioB
想要明确的是,这会阻塞线程。就像 sleep() 一样。但这并不能解决 GioB 的问题。 - Andrej

2

使用usleep,它接受以微秒为单位的整数参数。(例如1,000,000微秒等价于1秒)所以要延迟0.1秒,请使用以下代码:

       // Sleep for 0.1s
       usleep(100000) 

建议在后台线程中使用。你肯定不想在主UI线程上执行这个操作!


1
你可以使用 NSTimer 来实现,首先你需要实现 NSTimer,然后添加持续时间为 1.0 秒或其他所需的时间,接着传递时间,NSTimer 就会调用其函数,然后你就可以将问题更改为另一个。

我已经在使用计时器了,我又添加了一个用于颜色的更改,它起作用了,谢谢。 - GioB

0

我认为你应该尝试使用NSTimer或dispatch_after来完成这样的任务:(NSTimer可能不太方便,因为它需要一个类方法作为回调选择器)

sender.backgroundColor = UIColor.greenColor()
dispatch_after(#your time#, 
  dispatch_get_main_queue()){
  sender.backgroundColor = UIColor.whiteColor()
  #load your new question logic#
}

附注:在Swift中不可用performSelector:delay:方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接