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

1voto

George P Points 820

Vous devez appeler [label sizeToFit] ; après avoir défini le texte pour éviter des décalages étranges lorsque l'étiquette est automatiquement repositionnée dans la vue titre lorsque d'autres boutons occupent la barre de navigation.

1voto

sinh99 Points 2275

On peut utiliser cette méthode dans le fichier appdelegate et on peut l'utiliser dans toutes les vues.

+(UILabel *) navigationTitleLable:(NSString *)title
{
CGRect frame = CGRectMake(0, 0, 165, 44);
UILabel *label = [[[UILabel alloc] initWithFrame:frame] autorelease];
label.backgroundColor = [UIColor clearColor];
label.font = NAVIGATION_TITLE_LABLE_SIZE;
label.shadowColor = [UIColor whiteColor];
label.numberOfLines = 2;
label.lineBreakMode = UILineBreakModeTailTruncation;    
label.textAlignment = UITextAlignmentCenter;
[label setShadowOffset:CGSizeMake(0,1)]; 
label.textColor = [UIColor colorWithRed:51/255.0 green:51/255.0 blue:51/255.0 alpha:1.0];

//label.text = NSLocalizedString(title, @"");

return label;
}

1voto

dip Points 63

TitleTextAttributes Attributs d'affichage pour le texte du titre de la barre.

@property(nonatomic, copy) NSDictionary *titleTextAttributes Discussion Vous pouvez spécifier la police, la couleur du texte, la couleur de l'ombre du texte et le décalage de l'ombre du texte pour le titre dans le dictionnaire des attributs de texte, en utilisant les clés d'attributs de texte décrites dans NSString UIKit Additions Reference.

Disponibilité Disponible dans iOS 5.0 et plus. Déclaré dans UINavigationBar.h

0voto

Abolfoooud Points 511

Afin de rendre l'excellente solution d'Erik B plus utilisable à travers les différents UIVIewCOntrollers de votre application, je recommande d'ajouter une catégorie pour UIViewController et de déclarer sa méthode setTitle:title à l'intérieur. De cette façon, vous obtiendrez le changement de couleur du titre sur tous les contrôleurs de vue sans avoir besoin de le dupliquer.

Une chose à noter cependant est que vous n'avez pas besoin de [super setTItle:tilte] ; dans le code d'Erik et que vous devrez explicitement appeler self.title = @ "mon nouveau titre" dans vos contrôleurs de vue pour que cette méthode soit appelée.

@implementation UIViewController (CustomeTitleColor)

- (void)setTitle:(NSString *)title
{
    UILabel *titleView = (UILabel *)self.navigationItem.titleView;
    if (!titleView) {
        titleView = [[UILabel alloc] initWithFrame:CGRectZero];
        titleView.backgroundColor = [UIColor clearColor];
        titleView.font = [UIFont boldSystemFontOfSize:20.0];
        titleView.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];

        titleView.textColor = [UIColor blueColor]; // Change to desired color

        self.navigationItem.titleView = titleView;
        [titleView release];
    }
    titleView.text = title;
    [titleView sizeToFit];
}

@end

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