【问题标题】:Loading spinner for AlamofireAlamofire 的加载微调器
【发布时间】:2017-04-02 07:53:57
【问题描述】:

在我的应用程序中,我使用 alamofire 将 JSON 数据从 Web api 解析到我的应用程序中。我想在数据加载时添加一个加载微调器。我看过了:

Alamofire Loading Indicator

但这只显示了上面的小网络图标。任何帮助都会很棒。

【问题讨论】:

  • 您在寻找 UIActivityIndi​​cator 吗?您必须将其作为子视图添加到您想要的任何位置,然后对其调用 start 或 stop refresh。
  • 你能举个例子吗?
  • @rob 检查这个stackoverflow.com/a/38457815/6433023 它不在 Swift 3 中,但你可以通过小改动来实现
  • @rob 在下面查看我的答案。它会帮助你。 stackoverflow.com/a/51337897/5501433

标签: ios json swift3 alamofire


【解决方案1】:

您正在寻找活动指示器视图UIActivityIndicatorView。这必须手动添加。您可以通过情节提要添加它并启用hidesWhenStopped,这样指示器在停止时不可见。

在任何情况下,您都必须在开始请求之前手动调用startAnimating,然后在请求完成时调用stopAnimating

要以编程方式完成所有操作,它看起来像这样:

// Assuming in the view controller
        let activityIndicator = UIActivityIndicatorView(style: .gray) // Create the activity indicator
        view.addSubview(activityIndicator) // add it as a  subview
        activityIndicator.center = CGPoint(x: view.frame.size.width*0.5, y: view.frame.size.height*0.5) // put in the middle
        activityIndicator.startAnimating() // Start animating
        request.perform { data, error in
            activityIndicator.stopAnimating() // On response stop animating
            activityIndicator.removeFromSuperview() // remove the view
            // ... process data
        }

【讨论】:

  • 我是否会将“UIActivityIndi​​catorView”添加到我的 tableView 中,并且此代码是否会进入与 TableView 相同的 ViewController 中
  • 你可以,但我不建议这样做。在表格视图中,指示器将随内容滚动(尽管它可能是您想要的)。代码将相似,但您将删除所有“视图”调用,因为表视图已经是一个视图。因此,例如,您可以调用“addSubview(activityIndi​​cator)”而不是“view.addSubview(activityIndi​​cator)”
  • 另外,在使用表视图和活动指示器时,请查看 UIRefreshControl。您可以创建一个刷新控件,其中表视图具有设置它的属性。然后只需调用 tv.refreshControl.beginRefreshing()。这主要用于下拉刷新。
  • 嗨,Matic,我很困惑如何添加这个...我是否在表格视图的顶部放置一个视图,并向该视图添加一个活动指示器,这将是一个子视图。然后为指标做一个出口,然后实现你的代码?
【解决方案2】:

回答为时已晚,但如果您仍然需要它,它可能会有所帮助。 必须手动添加活动指示器。

Alamofire.request 方法开始之前添加UIActivityIndicator

//start the activityindicator here
UIActivityIndicator.startAnimating()

//request Alamofire
Alamofire.request
{
    //parse the response and do all the math
    //end your animator here - make sure this happens on the main thread
    UIActivityIndicator.stop()
}

希望这对您有所帮助。解决方案中没有代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    • 2014-08-20
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 2020-01-14
    相关资源
    最近更新 更多