Comment ajouter un cercle spinner UIActivityIndicatorView dans un UIBarButton, de sorte que lorsqu'un utilisateur appuie sur l'un de ces boutons dans la barre de navigation, il voit un spinner pendant le chargement?Ajouter UIActivityIndicatorView dans UIBarButton
Répondre
Si vous essayez de montrer la roue d'activité dans un bouton de la barre de navigation (par exemple, vous pourriez avoir un bouton d'actualisation de votre barre de navigation) - vous pouvez créer une nouvelle UIBarButtonItem
avec une vue personnalisée étant le UIActivityIndicatorView
:
Objective-C
uiBusy = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
uiBusy.hidesWhenStopped = YES;
[uiBusy startAnimating];
[self.navigationItem.rightBarButtonItem initWithCustomView:uiBusy];
Swift
let uiBusy = UIActivityIndicatorView(activityIndicatorStyle: .White)
uiBusy.hidesWhenStopped = true
uiBusy.startAnimating()
self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: uiBusy)
Ceci écrase votre rightBarButtonItem
avec la roue qui tourne. Lorsque vous avez terminé, recréez simplement le rightBarButtonItem
.
UIActivityIndicatorView est un type de vue. Définissez son cadre pour être dans votre bouton et utilisez -addSubview pour l'ajouter à la hiérarchie d'affichage du UIBarButton.
Je simplifie, puisque vous devez essayer de l'adapter à l'espace (éventuellement par mise à l'échelle) et centrez ...
pseudocode, je ne vais pas vérifier dans Xcode, mais quelque chose comme ceci devrait fonctionner:
UIActivityIndicatorView *act = [[UIActivityIndicatorView alloc] init];
act.frame = CGMakeRect(3,3,25,25);
[myBarButton addSubview:act];
[act release];
'UIBarButtonItem' n'est pas une sous-classe' UIView' et n'a pas 'addSubview:'. Vous devriez faire quelque chose comme 'UIBarButtonItem * myBarButton = [[UIBarButtonItem alloc] initWithCustomView: act];' à la place ou 'myBarButton.customView = act;'. –
En fait, l'indicateur d'activité n'est pas ajouté comme élément de la barre d'outils. C'est une sous-vue de la vue actuelle.
UIActivityIndicatorView *act = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
[act setCenter:CGPointMake(20, 20)];
[act startAnimating];
[self.view addSubview:act];
Souvenez-vous de le libérer dans -(void)dealloc
.
Plus d'informations sur la façon d'utiliser l'indicateur d'activité est ici: http://stackoverflow.com/questions/593234/how-to-use-activity-indicator-view-on-iphone –
activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
activityIndicator.hidesWhenStopped = YES;
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:activityIndicator];
Placez le suivant où jamais est nécessaire:
[activityIndicator startAnimating];
[activityIndicator stopAnimating];
Utilisez ces méthodes
-(void)startAniatingActivityIndicator{
@try {
activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
activityIndicator.frame = CGRectMake(self.window.frame.size.width-30, 32.5, activityIndicator.bounds.size.width, activityIndicator.bounds.size.height);
[self.window addSubview:activityIndicator];
[activityIndicator startAnimating];
[self.window bringSubviewToFront:activityIndicator];
}
@catch (NSException *exception) {
}
@finally {
}
}
-(void)stopAniatingActivityIndicator{
[activityIndicator stopAnimating];
[activityIndicator removeFromSuperview];
activityIndicator = nil;
}
- 1. Comment ajouter une image dans UIActivityIndicatorView
- 2. UIBarButton Problème
- 3. UIActivityindicatorView dans l'étiquette possible?
- 4. Comment ajouter plus d'un UIBarButton sur UINavigationItem.rightBarButtonItem (ou leftBarButtonItem)?
- 5. SDK iPhone: Comment ajouter une image à un UIBarButton?
- 6. Taille de police UIBarButton
- 7. Problème UIActivityIndicatorView
- 8. iPad - Afficher/Masquer UIBarButton
- 9. Icônes UIButton sur UIBarbutton
- 10. Changer l'image de UIBarButton
- 11. Objectif C - UIActivityIndicatorView positionnement
- 12. affichera NSObject show UIActivityIndicatorView?
- 13. UIBarButton n'a pas d'animation 'presse'
- 14. iPhone SDK UIBarButton Memory Leaks
- 15. UIActivityIndicatorView Fichiers PNG
- 16. Où utiliser UIActivityIndicatorView?
- 17. UIActivityIndicatorView ou similaire quelqu'un
- 18. Couleur personnalisée mon UIActivityIndicatorView
- 19. Remplacer UIBarButtonItem avec UIActivityIndicatorView
- 20. Couleur d'arrière-plan pour UIActivityIndicatorView
- 21. iphone - UIActivityIndicatorView n'arrête pas d'animer
- 22. Problème avec UIActivityIndicatorView sur l'iPhone
- 23. UIActivityIndicatorView avec UITableView dans le contrôleur de navigation
- 24. comment faire UIBarButton à droite Justifié dans IPhone
- 25. Ouverture d'un UIActivityIndicatorView après une UIActionSheet
- 26. UIActivityIndicatorView est buggé dans l'iPhoneSDK? (crash de UIKit)
- 27. UIActivityIndicatorView intérieur UIButtonBarItem ne fonctionne pas correctement
- 28. Afficher UIActivityIndicatorView lors du chargement de l'application
- 29. iPhone UIActivityIndicatorView lors du chargement de UIViewController
- 30. Exemple d'affichage en superposition avec UIActivityIndicatorView
'[self.navigationItem.rightBarButtonItem initWithCustomView: uiBusy]; 'me semble douteux. Je m'attendrais 'self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView: uiBusy];' selon la réponse de @ emotality. –
Pour l'enregistrement: Vous voulez généralement définir 'uiBusy.activityIndicatorViewStyle = .gray' – Jeremy
J'utilise une propriété calculée pour accéder à uiBusy:' private var uiBusy: UIActivityIndicatorView { si laissez busyView = self.navigationItem.rightBarButtonItem? .customView comme?UIActivityIndicatorView { retour busyView } else { laisser uiBusy = UIActivityIndicatorView (activityIndicatorStyle: .white) uiBusy.hidesWhenStopped = true uiBusy.activityIndicatorViewStyle = .gray self.navigationItem.rightBarButtonItem = UIBarButtonItem (CustomView: uiBusy) retour uiBusy } } ' – Jeremy