我正在我的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/

10-10 13:22