我正在我的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初始化的变量。有什么办法吗?谢谢大家!
您重新创建活动指示器,所以它不起作用。
此外,您还存在过渡到新viewController的问题,因此self.view
将不再包含活动指示器。
所以我建议您做的是创建另一个UIWindow
并放在顶部,向其中添加一个视图和活动指示器,然后在调用stopLoading()
时,寻找该UIWindow
并删除整个[C0 ](如果存在)。
您可以将store window
用作静态变量,因此您将在两个调用中获得相同的对象: