Swift 版本的 MBProgressHUD 是一个 iOS 即插即用类,可以在后台线程工作中显示带有指示器和/或标签的不透明 HUD。
要运行示例项目,请克隆仓库,然后首先在示例目录中运行 pod install
。
XProgressHUD
在 iOS 8+ 和 swift 4.0 上运行。
CocoaPods 是将 MBProgressHUD 添加到项目的推荐方式。
pod 'XProgressHUD'
pod install
来安装 pod。import XProgressHUD
在需要的位置包含 XProgressHUD。或者,您可以直接将 XProgressHUD.swift
添加到您的项目中。
处理 MBProgressHUD 时,您需要遵循的主要指南是在后台线程中进行长时间运行的任务时,保持主线程无工作,以便及时更新 UI。因此,使用 MBProgressHUD 的推荐方式是在主线程上设置它,然后将您想要执行的任何任务 spins off 到一个新的线程。
ProgressHUD.showHUD(forView: self.view, animated: true)
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 10) {
ProgressHUD.hideHUD(forView: self.view, animated: true)
}
如果您需要配置 HUD,您可以通过使用 XProgressHUD reference 来执行此操作,该 reference 由 showHUDAddedTo:animated: 返回。
let hub = ProgressHUD.showHUD(forView: self.view, animated: true)
hub?.label.text = "加载中"
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 10) {
ProgressHUD.hideHUD(forView: self.view, animated: true)
}
您还可以使用一个 NSProgress
对象,当通过该对象报告进度时,MBProgressHUD 会自动更新。
let hub = ProgressHUD.showHUD(forView: self.scrollView, animated: true)
hub?.mode = .determinate
hub?.label.text = "加载中..."
hub?.detailsLabel.text = "(1/2)"
hud?.progressObject = progress;
您应该知道,在上述 block 中发出的任何 HUD 更新不会显示,直到 block 完成。
ming, [email protected]
XProgressHUD 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。