Dans mon application, je souhaite ajouter un indicateur d'activité au centre de la barre de navigation (position du titre) .Landez la réponse du service Web terminée, il devrait remplacer par l'ancien titre.J'ai 5 barres de navigation dans mon application.Lorsque j'ai recherché dans Google I obtenu plusieurs codes mais ils changent simplement le bouton de barre gauche ou droit. Aide? P>
4 Réponses :
Vous utilisez la propriété Titleview de l'élément de navigation pour remplacer le titre d'une barre de navigation. Donc, pour ajouter un indicateur d'activité, faites-le simplement:
self.navigationItem.titleView = nil;
Existe-t-il un moyen d'afficher l'indicateur d'activité avec un texte comme "Connexion"?
@ Roi.holtzman, je pense que cela devrait être possible. Vous auriez besoin de créer un UIView comme TitleviewView's Titleview, et de lui donner deux sous-espions; un indicateur d'activité et une étiquette.
En outre, si vous souhaitez ajouter une étiquette de texte en regard de l'indicateur d'activité (comme indiqué par Apple dans l'application Paramètres, E.G. Connexion Facebook), vous pouvez le faire:
- (void)showActivityIndicator { UIActivityIndicatorView *activityIndicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; activityIndicatorView.frame = CGRectMake(0, 0, 22, 22); activityIndicatorView.color = [UIColor blackColor]; [activityIndicatorView startAnimating]; UILabel *titleLabel = [UILabel new]; titleLabel.text = @"Creating Account"; titleLabel.font = [UIFont boldFlatFontOfSize:18]; CGSize fittingSize = [titleLabel sizeThatFits:CGSizeMake(200.0f, activityIndicatorView.frame.size.height)]; titleLabel.frame = CGRectMake(activityIndicatorView.frame.origin.x + activityIndicatorView.frame.size.width + 8, activityIndicatorView.frame.origin.y, fittingSize.width, fittingSize.height); UIView *titleView = [[UIView alloc] initWithFrame:CGRectMake(-(activityIndicatorView.frame.size.width + 8 + titleLabel.frame.size.width)/2, -(activityIndicatorView.frame.size.height)/2, activityIndicatorView.frame.size.width + 8 + titleLabel.frame.size.width, activityIndicatorView.frame.size.height)]; [titleView addSubview:activityIndicatorView]; [titleView addSubview:titleLabel]; self.navigationItem.titleView = titleView; } - (void)hideActivityIndicator { self.navigationItem.titleView = nil; }
La réponse pasqls a bien fonctionné pour moi, je l'ai écrit dans SWIFT
func showActivityIndicator() { let activityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.White) activityIndicatorView.frame = CGRectMake(0, 0, 14, 14) activityIndicatorView.color = UIColor.blackColor() activityIndicatorView.startAnimating() let titleLabel = UILabel.new() titleLabel.text = "...Connecting" titleLabel.font = UIFont.italicSystemFontOfSize(14) let fittingSize = titleLabel.sizeThatFits(CGSizeMake(200.0, activityIndicatorView.frame.size.height)) titleLabel.frame = CGRectMake(activityIndicatorView.frame.origin.x + activityIndicatorView.frame.size.width + 8, activityIndicatorView.frame.origin.y, fittingSize.width, fittingSize.height) let titleView = UIView(frame: CGRectMake(((activityIndicatorView.frame.size.width + 8 + titleLabel.frame.size.width) / 2), ((activityIndicatorView.frame.size.height) / 2), (activityIndicatorView.frame.size.width + 8 + titleLabel.frame.size.width), (activityIndicatorView.frame.size.height))) titleView.addSubview(activityIndicatorView) titleView.addSubview(titleLabel) self.navigationItem.titleView = titleView } func hideActivityIndicator() { self.navigationItem.titleView = nil }
Mieux vaut écrire donner une explication sur votre réponse.
Il est parfois difficile de trouver des réponses à Swift! Merci
de PASQL P> private func showActivityIndicator() {
let activityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: .white)
activityIndicatorView.frame = CGRect(x: 0, y: 0, width: 14, height: 14)
activityIndicatorView.color = .black
activityIndicatorView.startAnimating()
let titleLabel = UILabel()
titleLabel.text = "...Connecting"
titleLabel.font = UIFont.italicSystemFont(ofSize: 14)
let fittingSize = titleLabel.sizeThatFits(CGSize(width: 200.0, height: activityIndicatorView.frame.size.height))
titleLabel.frame = CGRect(x: activityIndicatorView.frame.origin.x + activityIndicatorView.frame.size.width + 8,
y: activityIndicatorView.frame.origin.y,
width: fittingSize.width,
height: fittingSize.height)
let rect = CGRect(x: (activityIndicatorView.frame.size.width + 8 + titleLabel.frame.size.width) / 2,
y: (activityIndicatorView.frame.size.height) / 2,
width: activityIndicatorView.frame.size.width + 8 + titleLabel.frame.size.width,
height: activityIndicatorView.frame.size.height)
let titleView = UIView(frame: rect)
titleView.addSubview(activityIndicatorView)
titleView.addSubview(titleLabel)
navigationItem.titleView = titleView
}
private func hideActivityIndicator() {
navigationItem.titleView = nil
}
merci d'améliorer le code. Toujours nous obtiendrons de nouveaux changements, mais ça va.