web-dev-qa-db-fra.com

Comment placer mon ActivityIndicator par programme?

Je veux placer mon ActivityIndicator là où je le veux par programme, mais je ne sais pas comment.

Je sais comment le mettre au centre de l'écran:

activityIndicator.center = self.view.center

Mais je veux quelque chose comme ça:

activityIndicator.activityIndicator(frame: CGRect(x: 100, y: 100, width: 100, height: 50))

Mais je n'arrive pas à le faire fonctionner.

8
user9123

Fondamentalement, vous pouvez le faire en quelques lignes de code:

 func showActivityIndicatory() {
    var activityView = UIActivityIndicatorView(style: .whiteLarge)
    activityView.center = self.view.center
    self.view.addSubview(activityView)
    activityView.startAnimating()
}

Si vous avez besoin de plus de contrôle sur ActivityView, veuillez définir l'origine de la vue container pour placer l'indicateur d'activité n'importe où sur l'écran.

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()
}
11
Usman Javed

Swift 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()
1
Matic

Vous pouvez déclarer:

var activityView: UIActivityIndicatorView?

Et, dans votre classe, créez les méthodes suivantes pour afficher ou masquer l'indicateur:

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

func hideActivityIndicator(){
    if (activityView != nil){
        activityView?.stopAnimating()
    }
}

Ce code fonctionne pour moi. Bonne chance!

0
jframosg