Я пытаюсь добавить индикатор выполнения в моем приложении. Я нашел вопрос на How to add Progress bar to UIAlertController?, но он не показывал, как обновить индикатор выполнения. Я упрощаю код, как показано ниже, но он не обновлял индикатор выполнения (он отображается только после завершения выполнения). Что я на самом деле посмотрел? Спасибо за помощь.Добавить индикатор выполнения в UIAlertController с показом обновления
override func viewDidLoad() {
super.viewDidLoad()
var topViewController = UIApplication.shared.delegate!.window!!.rootViewController!
while (topViewController.presentedViewController != nil){
topViewController = topViewController.presentedViewController!
}
DispatchQueue.main.async(execute: {
let alert = UIAlertController(title: "downloading", message: "pls wait", preferredStyle: .alert)
let progressBar = UIProgressView(progressViewStyle: .default)
progressBar.setProgress(0.0, animated: true)
progressBar.frame = CGRect(x: 10, y: 70, width: 250, height: 0)
alert.view.addSubview(progressBar)
topViewController.present(alert, animated: true, completion: nil)
var progress: Float = 0.0
repeat {
DispatchQueue.global(qos: .background).async(execute: {
progress += 0.01
print (progress)
DispatchQueue.main.async(flags: .barrier, execute: {
progressBar.setProgress(progress, animated: true)
})
})
} while progress < 1.0
})
}
Как быстро выполняется этот цикл выполнения? Вы видите, что печатный прогресс медленно нарастает, или все цифры появляются во вспышке? добавьте немного задержки там, загрузите файл или что-то еще, и посмотрите, как это выглядит. – Russell