Swift - 实施全球活动指标

Rob*_*rks 4 activity-indicator swift

我正在尝试在swift中创建一个全局活动指示器,只要对api进行提取就会调用它.我们的想法是,活动指示器将显示在导航栏(导航视图控制器的子项)的左上角,并且可在每个应用程序页面上使用.

由于新帐户/低代表,无法显示示例图像

我的活动指示器显示正确,我只是不确定如何从应用程序的任何页面提供它 - 我已经考虑了扩展,但我不确定最好的方法是什么.任何帮助将不胜感激.

活动指标代码:

let activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.White)
var activityItem = UIBarButtonItem()

func navBarActivity() {
    // Call navBarActivity() to start activity indicator
    // Use navigationItem.leftBarButtonItem = nil to stop activity indicator
    activityIndicator.startAnimating()
    activityIndicator.hidden = false

    self.activityItem = UIBarButtonItem(customView: activityIndicator)
    self.navigationItem.leftBarButtonItem = activityItem
}
Run Code Online (Sandbox Code Playgroud)

Won*_*Kim 7

我会推荐像这样的扩展.

extension UIViewController {
    func displayNavBarActivity() {
        let indicator = UIActivityIndicatorView(activityIndicatorStyle: .White)
        indicator.startAnimating()
        let item = UIBarButtonItem(customView: indicator)

        self.navigationItem.leftBarButtonItem = item
    }

    func dismissNavBarActivity() {
        self.navigationItem.leftBarButtonItem = nil
    }
}
Run Code Online (Sandbox Code Playgroud)

self.displayNavBarActivity()在api 呼叫之前呼叫,并self.dismissNavBarActivity()在api呼叫完成后呼叫.

不过,我想你检查networkActivityIndicatorVisibleUIApplication.考虑使用此选项.

如果应用程序应显示网络活动,请指定YES;如果不应该,则指定NO.默认值为NO.状态栏中的旋转指示器显示网络活动.该应用可能会明确隐藏或显示此指标.

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/#//apple_ref/occ/instp/UIApplication/networkActivityIndi​​catorVisible