288 votes

Couleur du texte du titre de la barre de navigation de l'iPhone

Il semble que la couleur du titre de la barre de navigation iOS soit blanche par défaut. Existe-t-il un moyen de la changer pour une autre couleur ?

Je suis conscient de la navigationItem.titleView en utilisant une image. Comme mes compétences en matière de conception sont limitées et que je n'ai pas réussi à obtenir le glossy standard, je préfère changer la couleur du texte.

Tout commentaire serait très apprécié.

8voto

Anthony Main Points 2331

Voici ma solution basée sur Stevens

La seule vraie différence est que j'ai ajouté une manipulation pour ajuster la position en fonction de la longueur du texte, ce qui semble être similaire à la façon dont Apple le fait.

UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(([self.title length] < 10 ? UITextAlignmentCenter : UITextAlignmentLeft), 0, 480,44)];
titleLabel.backgroundColor = [UIColor clearColor];
titleLabel.font = [UIFont boldSystemFontOfSize: 20.0f];
titleLabel.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
titleLabel.textAlignment = ([self.title length] < 10 ? UITextAlignmentCenter : UITextAlignmentLeft);
titleLabel.textColor = [UIColor redColor];
titleLabel.text = self.title;
self.navigationItem.titleView = titleLabel;
[titleLabel release];

Vous pouvez ajuster la valeur 10 en fonction de la taille de votre police.

6voto

coryjacobsen Points 668

J'ai rencontré un problème avec mes boutons de navigation qui désaxaient le texte (lorsque vous n'avez qu'un seul bouton). Pour résoudre ce problème, j'ai simplement modifié la taille de mon cadre comme suit :

CGRect frame = CGRectMake(0, 0, [self.title sizeWithFont:[UIFont boldSystemFontOfSize:20.0]].width, 44);

6voto

Shiny Points 408

J'ai personnalisé l'image d'arrière-plan de la barre de navigation et l'élément du bouton gauche, et le titre gris ne correspond pas à l'arrière-plan. J'utilise alors :

[self.navigationBar setTintColor:[UIColor darkGrayColor]];

pour changer la couleur de la teinte en gris. Et le titre est maintenant blanc ! C'est ce que je veux.

J'espère pouvoir vous aider aussi :)

6voto

Ramesh Points 159

Il est recommandé de définir self.title car il est utilisé pour pousser les navbars enfants ou afficher le titre sur les tabbars.

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // create and customize title view
        self.title = NSLocalizedString(@"My Custom Title", @"");
        UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
        titleLabel.text = self.title;
        titleLabel.font = [UIFont boldSystemFontOfSize:16];
        titleLabel.backgroundColor = [UIColor clearColor];
        titleLabel.textColor = [UIColor whiteColor];
        [titleLabel sizeToFit];
        self.navigationItem.titleView = titleLabel;
        [titleLabel release];
    }
}

4voto

Nikesh K Points 480

Utiliser comme ceci pour le soutien à l'orientation

    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,40)];
 [view setBackgroundColor:[UIColor clearColor]];
 [view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight ];

 UILabel *nameLabel = [[UILabel alloc] init];
 [nameLabel setFrame:CGRectMake(0, 0, 320, 40)];
 [nameLabel setBackgroundColor:[UIColor clearColor]];
 [nameLabel setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin |UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin];
 [nameLabel setTextColor:[UIColor whiteColor]];
 [nameLabel setFont:[UIFont boldSystemFontOfSize:17]];
  [nameLabel setText:titleString];
 [nameLabel setTextAlignment:UITextAlignmentCenter];
 [view addSubview:nameLabel];
 [nameLabel release];
 self.navigationItem.titleView = view;
 [view release];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X