几秒钟后显示活动指示器?

时间:2018-01-24 15:03:59

标签: ios swift uiactivityindicatorview

如果需要很长时间才能完成,我想显示网络请求的活动指示器。

有一种方法可以在经过一定的秒数后启动指标以允许请求完成吗?我不希望它立即闪现,因为这会在快速请求中产生不稳定的UI / UX,但是无法看到在更长的请求中呈现它的最佳方式?

我正在考虑使用:

DispatchQueue.main.asyncAfter(deadline: .now() + 3.0, execute: {}

然而,即使请求在3秒内完成,这也会导致计时器显示......

2 个答案:

答案 0 :(得分:2)

使用DispatchWorkItem

fileprivate var indicatorTask: DispatchWorkItem?

在这3秒后运行它:

func prepareActivityIndicator() {
    indicatorTask?.cancel()
    indicatorTask = DispatchWorkItem {
        // show indicator
    }
    DispatchQueue.main.asyncAfter(deadline: .now() + 3, execute: indicatorTask!)
}

由于你引用了indicatorTask,你可以随时取消它。

答案 1 :(得分:0)

最快的方法是使用Timer对象。请求完成后,只需致电myTimer.invalidate

 let timer =  Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(showIndicator), userInfo:nil, repeats:false)