Swift:延迟增加标签

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift:延迟增加标签相关的知识,希望对你有一定的参考价值。

我的应用程序在到达代码的这一部分时会冻结。我试图以一半秒的延迟递增一个数字,然后将其打印到屏幕上。所以标签文本会变成1,然后是2,然后是3,等等。我把这个代码扔进游乐场,DispatchQueue似乎无限上升。谢谢。

var percentage = 0

func incrementLabel (amount: Int){
    var count = 0
    while count <= amount{
        DispatchQueue.main.asyncAfter(deadline: .now() + 0.5, execute: {
            percentage += 1
            count += 1
        })
    }
}

incrementLabel(amount: 10)
print(percentage)
答案

这是替代DispatchQueue的替代解决方案:

var percentage = 0
var counter = 0
var timer: Timer?

func incrementLabel(amount: Int) {
    counter = amount
    timer = Timer.scheduledTimer(timeInterval: 0.5, target: self, selector: #selector(self.updateDelay), userInfo: nil, repeats: true)
}

@objc func updateDelay() {
    if (counter > 0) {
        counter -= 1

        percentage += 1
    } else {
        timer.invalidate()
        timer = nil
    }
}

incrementLabel(amount: 10)
print(percentage)

这在Swift中使用Timer

以上是关于Swift:延迟增加标签的主要内容,如果未能解决你的问题,请参考以下文章

更改标签文本时的延迟响应(Swift)

由于休息api延迟,视图寻呼机中的第一个片段未显示

Swift - 在 TableView 单元中使用步进器增加标签

在 Playground 中的 swift 3 中添加延迟似乎不准确

swift常用代码片段

swift 代码片段