Global Loading Icon Swift

问题描述 投票:1回答:2

我正在我的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初始化的变量。有什么办法吗?谢谢大家!

ios swift uiactivityindicatorview
2个回答
1
投票

您重新创建活动指示器,所以它不起作用。

此外,您还存在过渡到新viewController的问题,因此self.view将不再包含活动指示器。

所以我建议您做的是创建另一个UIWindow并放在顶部,向其中添加一个视图和活动指示器,然后在调用stopLoading()时,寻找该UIWindow并删除整个[C0 ](如果存在)。


0
投票

您可以将store window用作静态变量,因此您将在两个调用中获得相同的对象:

© www.soinside.com 2019 - 2024. All rights reserved.