我有一个生成6个随机数的UIButton,并在循环结束后在6个UILabel上显示它们。
有没有办法为每个标签添加延迟并更新它们,看起来数字是逐个生成的?
继承我的功能代码,我尝试使用dispatch_async并在另一个线程中使用usleep,目前该程序就像我想要的那样工作,但是我不知道这是否是最好的方法
@IBAction func generateNumber() {
generateButton.enabled = false
clearLottoLabels()
for var i = 1; i<50; ++i{
lottoNumbers.append(i)
}
dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0)){
for label in self.lottoLabels{
self.lottoNumbers.shuffle()
var lotto = String(self.lottoNumbers.removeLast())
usleep(100000)
dispatch_async(dispatch_get_main_queue()){
label.text! = lotto
}
}
}
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(0.6 * Double(NSEC_PER_SEC))), dispatch_get_main_queue()) { () -> Void in
self.generateButton.enabled = true
}
}
答案 0 :(得分:1)
尝试
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 10 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
// your UI code here
});