如何以编程方式放置我的activityIndi​​cator?

use*_*123 7 activity-indicator uiactivityindicatorview swift swift3

我想将我的activityIndi​​cator放置在需要编程的地方,但是我不知道怎么做。

我知道如何将其放在屏幕中央:

activityIndicator.center = self.view.center
Run Code Online (Sandbox Code Playgroud)

但是我想要这样的东西:

activityIndicator.activityIndicator(frame: CGRect(x: 100, y: 100, width: 100, height: 50))
Run Code Online (Sandbox Code Playgroud)

但是我似乎无法使它起作用。

Usm*_*ved 10

基本上,您只需执行几行代码即可:

 func showActivityIndicatory() {
    var activityView = UIActivityIndicatorView(style: .whiteLarge)
    activityView.center = self.view.center
    self.view.addSubview(activityView)
    activityView.startAnimating()
}
Run Code Online (Sandbox Code Playgroud)

如果需要对activityView进行更多控制,请设置“ container视图原点” 以将activityindicator放置在屏幕上的任何位置。

func showActivityIndicatory() {
    let container: UIView = UIView()
    container.frame = CGRect(x: 0, y: 0, width: 80, height: 80) // Set X and Y whatever you want
    container.backgroundColor = .clear

    let activityView = UIActivityIndicatorView(style: .whiteLarge)
    activityView.center = self.view.center

    container.addSubview(activityView)
    self.view.addSubview(container)
    activityView.startAnimating()
}
Run Code Online (Sandbox Code Playgroud)


小智 7

斯威夫特5:

let activityIndicator = UIActivityIndicatorView(style: UIActivityIndicatorView.Style.gray)

    // Place the activity indicator on the center of your current screen
            myActivityIndicator.center = view.center

    // In most cases this will be set to true, so the indicator hides when it stops spinning
            myActivityIndicator.hidesWhenStopped = true

    // Start the activity indicator and place it onto your view
            myActivityIndicator.startAnimating()
            view.addSubview(myActivityIndicator)

    // Do something here, for example fetch the data from API


    // Finally after the job above is done, stop the activity indicator
            myActivityIndicator.stopAnimating()
Run Code Online (Sandbox Code Playgroud)

  • `// 在这里做一些事情,例如从 API 获取数据` - 如果这需要几秒钟,你应该总是在后台线程中执行它(这样你就不会阻塞主线程),然后在完成后切换回主线程并使用以下命令停止指示器:`DispatchQueue.main.async {self.myActivityIndi​​cator.stopAnimating()}`。 (2认同)

小智 5

您可以声明:

var activityView: UIActivityIndicatorView?
Run Code Online (Sandbox Code Playgroud)

并且,在您的类中,创建用于显示或隐藏指标的下一个方法:

func showActivityIndicator() {
    activityView = UIActivityIndicatorView(style: .large)
    activityView?.center = self.view.center
    self.view.addSubview(activityView!)
    activityView?.startAnimating()
}

func hideActivityIndicator(){
    if (activityView != nil){
        activityView?.stopAnimating()
    }
}
Run Code Online (Sandbox Code Playgroud)

这段代码对我有用。祝你好运!