我正在我的extension.swift文件中制作一个加载图标。我相信我们不需要仅使用任何第三方库来加载图标。但是我不能在扩展文件中存储任何值。如果我没有存储,它将看起来像
import UIKit
extension UIViewController {
func startLoading() {
let activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView()
activityIndicator.center = self.view.center
activityIndicator.hidesWhenStopped = true
activityIndicator.style = .gray
DispatchQueue.main.async {
self.view.addSubview(activityIndicator)
}
activityIndicator.startAnimating()
UIApplication.shared.beginIgnoringInteractionEvents()
}
func stopLoading() {
let activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView()
DispatchQueue.main.async {
activityIndicator.stopAnimating()
}
UIApplication.shared.endIgnoringInteractionEvents()
}
}
因此,在视图控制器中,您可以直接调用startLoading()或stopLoading()。但是stopLoading不起作用。这是因为它没有访问由startLoading初始化的变量。有什么办法吗?谢谢大家!
最佳答案
您重新创建 Activity 指示器,这就是为什么它不起作用的原因。
另外,您还存在过渡到新viewController的问题,因此self.view
将不再包含 Activity 指示器。
因此,我建议您做的是创建另一个UIWindow
并放在上面,向其中添加一个视图和 Activity 指示器,然后在调用stopLoading()
时,查找该UIWindow
并删除整个window
(如果存在)。
关于ios - 全局加载图标Swift,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58725920/