Comment puis-je créer un indicateur d'activité au milieu de la vue par programmation?
Je suis en train de travailler avec une application qui analyse une alimentation en ligne. lorsque je clique sur le bouton actualiser, il faut un certain temps pour analyser le fichier et afficher ses données. je veux un indicateur d'activité dans le milieu de l'affichage lorsque je clique sur le bouton actualiser. et lors de l'analyse est le fait que l'indicateur doit se cacher.
je suis en utilisant ce code mais sa ne marche pas.
- (IBAction)refreshFeed:(id)sender
{
UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
[self.view addSubview:spinner];
[spinner startAnimating];
//parsing code code
[spinner release];
}
source d'informationauteur Piscean
Vous devez vous connecter pour publier un commentaire.
Un UIActivityIndicator généralement besoin d'être placé dans un thread séparé du long processus (l'analyse des flux) afin d'apparaître.
Si vous voulez tout garder dans le même thread, alors vous devez donner l'indicateur de temps à apparaître. Cette question Stackoverflow adresses de placer un retard dans le code.
EDIT: Deux ans plus tard, je pense que chaque fois que vous utilisez un retard pour faire quelque chose, vous êtes probablement à faire le mal. Voici comment je ferais cette tâche maintenant:
de ce que vous dites ci-dessus le programme ne répond pas lors de l'analyse, qui est un problème. Si l'interface graphique se fige pendant que vous êtes de l'analyse des données, vous devez déplacer cette opération à un thread secondaire. De cette façon, votre GUI reste sensible et vous serez en mesure de voir le voyant d'activité.
sur le thread principal, vous devriez avoir quelque chose de semblable à cela dans le but de montrer l'indicateur d'activité:
après le thread secondaire est terminé, c'est le thread où vous analyser les données, vous devez appeler le thread principal quelque chose comme cela pour supprimer l'indicateur d'activité:
Changer le centre de l'indicateur d'activité comme
Pour Swift
Pour arrêter activityIndicator wirte
[activityIndicator stopAnimating]
sur place appropriéeAjouter ce code avant de commencer votre tâche:
Après l'achèvement de la tâche d'ajouter:
Dans Swift, ce qui a fonctionné pour mon application
Meilleure approche serait de vous ajouter indicatore sur xib & faire hide/unhide basée à vos besoins
Pour montrer spinner de rootController essayer:
ou
essayez comme ceci
Le problème avec certains des autres réponses est qu'un nouvel indicateur d'activité s'ajoute à chaque fois de sorte que le sous-vues commencer à s'empiler. Voici un exemple complet qui utilise un seul
UIActivityIndicator
.C'est l'ensemble du code pour le projet ci-dessus:
Vous pouvez écrire swift 4
M. Poscean mon code fonctionne. Mais c'est que vous voulez montrer de grandes apparition de l'indicateur d'activité vous pouvez l'utiliser....
var activityIndicator = UIActivityIndicatorView()
activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.gris)
activityIndicator.frame = CGRect(x: 0, y: 0, largeur: 50, hauteur: 50)
laissez-transform: CGAffineTransform = CGAffineTransform(scaleX: 1.5, y: 1.5)
activityIndicator.transformer = transformer
activityIndicator.centre = auto.vue.centre
activityIndicator.startAnimating()
auto.vue.addSubview(activityIndicator)