2010-12-01 4 views
1

Je veux mettre une icône à côté du titre de ma barre de navigation. Je préférerais ne pas l'implémenter en tant que titleView personnalisé, car alors je devrai créer un titleView personnalisé pour chaque contrôleur que je mettrai sur la pile (et j'ai une imbrication assez profonde). J'ajoute actuellement comme UIImageView à un NavigationBar. Mon problème est de calculer exactement la position horizontale de cette icône. Cela dépend de la largeur du bouton de retour, qui a chaque fois un autre titre. Comment puis-je calculer ce cadre de bouton arrière? Googler dessus ne semble pas apporter de résultats raisonnables.Ajouter une icône entre le bouton de retour et le titre de la barre de navigation

Merci à l'avance

Répondre

0

Vous pouvez calculer la taille d'une étiquette, avec votre texte et expérimenter ce que le bouton ajouter ..

CGSize s = [label sizeWithFont:_font]; 
+0

vous voulez dire prendre la largeur de l'étiquette du bouton arrière. Je pensais qu'il pourrait y avoir une approche plus standard ... –

0

je suis tombé sur cette même question . Ma solution était d'ajouter l'icône comme l'un des leftBarButtonItems, après un espace flexible. Cela le pousse contre le titre.

UIBarButtonItem *space = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease]; 
UIView *icon = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"titleIcon"]] autorelease]; 
UIBarButtonItem *iconItem = [[[UIBarButtonItem alloc] initWithCustomView:icon] autorelease]; 
NSArray *items = [NSArray arrayWithObjects: space, iconItem, nil]; 
self.navigationItem.leftBarButtonItems = items; 
self.navigationItem.leftItemsSupplementBackButton = YES; 

Il est pas tout à fait la même chose que la création d'un titleview personnalisé, cependant, de deux manières: (1) le texte du titre reste centrée si possible, avec l'icône à sa gauche, plutôt que de centrer le titre et l'icône ensemble ; et (2) lorsque vous poussez une nouvelle vue sur la pile, l'icône ne glisse pas vers la gauche avec le titre; à la place, il disparaît, comme les autres éléments du bouton. Ainsi, en fonction de vos besoins, cette solution peut ou non fonctionner pour vous. Mais au moins, cela évite d'essayer de faire correspondre les attributs de texte de titre standard dans une vue de titre personnalisée. (Autant que je puisse découvrir, il n'y a pas de façon automatique de faire cela.)

Questions connexes