【发布时间】:2018-08-04 23:46:57
【问题描述】:
我正在使用marmelroy/Zip framework 来压缩/解压缩项目中的文件,并使用JGProgressHUD 来显示操作的进度。
如果我尝试从 ViewDidLoad 方法显示它,我能够看到 HUD,但如果我在与 quickZipFiles 方法的进度功能相关的闭包中使用它(如代码示例中),则 hud 是在操作结束时显示。
我猜这可能与时间问题有关,但由于我对完成处理程序、闭包和 GDC(线程、异步任务等)不太感兴趣,所以我想请教一个建议。
有什么想法吗?
// In my class properties declaration
var hud = JGProgressHUD(style: .dark)
// In my ViewDidLoad
self.hud.indicatorView = JGProgressHUDPieIndicatorView()
self.hud.backgroundColor = UIColor(white: 0, alpha: 0.7)
// In my method
do {
self.hud.textLabel.text = NSLocalizedString("Zipping files...", comment: "Zipping File Message")
self.hud.detailTextLabel.text = "0%"
if !(self.hud.isVisible) {
self.hud.show(in: self.view)
}
zipURL = try Zip.quickZipFiles(documentsList, fileName: "documents", progress: { (progress) -> () in
let progressMessage = "\(round(progress*100))%"
print(progressMessage)
self.hud.setProgress(Float(progress), animated: true)
self.hud.textLabel.text = NSLocalizedString("Zipping files...", comment: "Zipping File Message")
self.hud.detailTextLabel.text = progressMessage
if (progress == 1.0) {
self.hud.dismiss()
}
})
} catch {
print("Error while creating zip...")
}
【问题讨论】:
标签: swift zip progress-bar swift4 hud