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é.

3voto

Shefali Soni Points 119

Pour définir la taille de la police du titre, j'ai utilisé les conditions suivantes, qui peuvent être utiles à tous.

if ([currentTitle length]>24) msize = 10.0f;
    else if ([currentTitle length]>16) msize = 14.0f;
    else if ([currentTitle length]>12) msize = 18.0f;

3voto

stringCode Points 744

Je pense que la bonne façon de définir la couleur de la barre d'UINavigation est la suivante :

NSDictionary *attributes=[NSDictionary dictionaryWithObjectsAndKeys:[UIColor redColor],UITextAttributeTextColor, nil];
self.titleTextAttributes = attributes;

Le code ci-dessus est écrit en tant que sous-classe de UINavigationBar, il fonctionne évidemment aussi sans sous-classe.

3voto

phatblat Points 2046

Une mise à jour du post d'Alex R. R. utilisant les nouveaux attributs de texte d'iOS 7 et l'Objective C moderne pour moins de bruit :

NSShadow *titleShadow = [[NSShadow alloc] init];
titleShadow.shadowColor = [UIColor blackColor];
titleShadow.shadowOffset = CGSizeMake(-1, 0);
NSDictionary *navbarTitleTextAttributes = @{NSForegroundColorAttributeName:[UIColor whiteColor],
                                            NSShadowAttributeName:titleShadow};

[[UINavigationBar appearance] setTitleTextAttributes:navbarTitleTextAttributes];

2voto

David McGraw Points 3498

C'est l'une des choses qui manquent. Le mieux est de créer votre propre barre de navigation personnalisée, d'ajouter une zone de texte et de manipuler la couleur de cette façon.

2voto

john Points 441

Après avoir rencontré le même problème (comme d'autres) de l'étiquette qui se déplace lorsque nous insérons un bouton dans la navBar (dans mon cas, j'ai un spinner que je remplace par un bouton lorsque la date est chargée), les solutions ci-dessus n'ont pas fonctionné pour moi, alors voici ce qui a fonctionné et a gardé l'étiquette au même endroit tout le temps :

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
    // this will appear as the title in the navigation bar
    //CGRect frame = CGRectMake(0, 0, [self.title sizeWithFont:[UIFont boldSystemFontOfSize:20.0]].width, 44);
   CGRect frame = CGRectMake(0, 0, 180, 44);
    UILabel *label = [[[UILabel alloc] initWithFrame:frame] autorelease];

    label.backgroundColor = [UIColor clearColor];
    label.font = [UIFont boldSystemFontOfSize:20.0];
    label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
    label.textAlignment = UITextAlignmentCenter;
    label.textColor = [UIColor yellowColor];
    self.navigationItem.titleView = label;
    label.text = NSLocalizedString(@"Latest Questions", @"");
    [label sizeToFit];
}

return self;

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