在Swift中每隔几毫秒更新一次接口

问题描述 投票:-3回答:1

我正在尝试使用Timer每200毫秒更新我的界面。它可以工作两到三秒钟,然后很快就会阻塞。

timer?.invalidate()
timer = nil

timer = Timer.scheduledTimer(withTimeInterval: 0.2, repeats: true, block: { (t) in
        // update interface
    })

我也尝试过使用DispatchQueue.main和递归函数,但是它不能完美运行,iOS在两到三秒钟后阻止了它

func runRecursiveTimer() {
    DispatchQueue.main.asyncAfter(deadline:.now() + 0.2,qos:.userInitiated){
        // update interface
        self.runRecursiveTimer()
    }
}

我有10张图像,我想每200毫秒一次更改它们

ios swift xcode timer block
1个回答
0
投票

以前使用的图像代码听起来似乎不是一个好主意,但这将使其始终具有最高的优先级。

DispatchQoS.QoSClass.userInteractive

与用户互动的任务在系统上具有最高优先级。将此类用于与用户交互或主动更新应用程序用户界面的任务或队列。例如,将其用于动画类或交互式跟踪事件。

DispatchQueue.main.asyncAfter(deadline:.now() + 0.2,qos:.userInteractive){
    // update interface
    self.runRecursiveTimer()
}
© www.soinside.com 2019 - 2024. All rights reserved.