Il semble que la couleur du titre de la barre de navigation iOS soit blanche par défaut. Existe-t-il un moyen de le changer en une couleur différente?
Je connais l' navigationItem.titleView
approche utilisant une image. Étant donné que mes compétences en conception sont limitées et que je n'ai pas réussi à obtenir le brillant standard, je préfère changer la couleur du texte.
Toute opinion serait très appréciée.
Réponses:
Une approche moderne
De façon moderne, pour l'ensemble du contrôleur de navigation… faites-le une fois, lorsque la vue racine de votre contrôleur de navigation est chargée.
Cependant, cela ne semble pas avoir d'effet dans les vues suivantes.
Approche classique
À l'ancienne, par contrôleur de vue (ces constantes sont pour iOS 6, mais si vous voulez le faire par contrôleur de vue sous iOS 7, vous voudrez la même approche mais avec des constantes différentes):
Vous devez utiliser un
UILabel
commetitleView
lenavigationItem
.L'étiquette doit:
label.backgroundColor = [UIColor clearColor]
).label.font = [UIFont boldSystemFontOfSize: 20.0f]
).label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]
).label.textAlignment = NSTextAlignmentCenter
(UITextAlignmentCenter
pour les SDK plus anciens).Définissez la couleur du texte de l'étiquette pour qu'elle soit de la couleur personnalisée que vous souhaitez. Vous voulez une couleur qui ne fasse pas fondre le texte dans l'ombre, ce qui serait difficile à lire.
J'ai travaillé cela par essais et erreurs, mais les valeurs que j'ai trouvées sont finalement trop simples pour qu'elles ne soient pas celles qu'Apple a choisies. :)
Si vous voulez vérifier cela, déposez ce code dans
initWithNibName:bundle:
dans l'exemple NavBarPageThreeViewController.m
d' Apple . Cela remplacera le texte par une étiquette jaune. Cela ne doit pas être distingué de l'original produit par le code d'Apple, à l'exception de la couleur.Edit: Lisez également la réponse d'Erik B ci-dessous. Mon code montre l'effet, mais son code offre un moyen plus simple de le mettre en place sur un contrôleur de vue existant.
la source
sizeWithFont:
, il prendra comme par magie le comportement d'alignement automatique de l'étiquette standard.Je sais que c'est un fil assez ancien, mais je pense qu'il serait utile de savoir pour les nouveaux utilisateurs qu'iOS 5 apporte une nouvelle propriété pour établir les propriétés du titre.
Vous pouvez utiliser UINavigationBar
setTitleTextAttributes
pour définir la police, la couleur, le décalage et la couleur de l'ombre.De plus, vous pouvez définir les mêmes attributs de texte de titre par défaut de UINavigationBar pour l'
UINavigationBars
ensemble de votre application.Par exemple comme ça:
la source
Dans iOS 5, vous pouvez modifier la couleur du titre navigationBar de la manière suivante:
la source
UITextAttributeTextColor
à jour versNSForegroundColorAttributeName
. Fonctionne comme un charme!self.navigationController.navigationBar.tintColor
n'a pas fonctionné pour moi. C'était le cas.Sur la base de la réponse de Steven Fisher, j'ai écrit ce morceau de code:
L'avantage de ce code, en plus de traiter correctement le cadre, est que si vous changez le titre de votre contrôleur, la vue de titre personnalisée sera également mise à jour. Pas besoin de le mettre à jour manuellement.
Un autre gros avantage est qu'il rend très simple l'activation de la couleur de titre personnalisée. Tout ce que vous devez faire est d'ajouter cette méthode au contrôleur.
la source
La plupart des suggestions ci-dessus sont désormais obsolètes, pour une utilisation iOS 7 -
Vérifiez également le NSAttributedString.h pour les différentes propriétés de texte qui peuvent être définies.
la source
Dans IOS 7 et 8, vous pouvez changer la couleur du titre en disons vert
la source
self.navigationController!.navigationBar.titleTextAttributes = NSDictionary(object: UIColor.whiteColor(), forKey: NSForegroundColorAttributeName) as [NSObject : AnyObject]
self.navigationController!.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]
Pour garder la question à jour, j'ajouterai la solution Alex RR , mais dans Swift :
Résultat:
la source
Méthode 1 , définissez-le dans IB:
Méthode 2 , une ligne de code:
la source
titleTextAttributes
seulementLa solution de tewha fonctionne bien si vous essayez de changer la couleur sur une page, mais je veux pouvoir changer la couleur sur chaque page. J'ai fait quelques petites modifications pour que cela fonctionne pour toutes les pages sur un
UINavigationController
NavigationDelegate.h
NavigationDelegate.m
la source
À partir d'iOS 5, nous devons définir la couleur du texte du titre et la police de la barre de navigation à l'aide du dictionnaire titleTextAttribute (dictionnaire prédéfini dans la référence de classe du contrôleur UInavigation).
la source
Version rapide
J'ai trouvé que la plupart d'entre vous ont présenté les réponses de la version Objective_C
Je voudrais implémenter cette fonction en utilisant Swift pour tous ceux qui en ont besoin.
Dans ViewDidload
1.Pour que l'arrière-plan de la barre de navigation devienne couleur (par exemple: BLEU)
2.Pour que l'arrière-plan NavigationBar devienne Image (par exemple: ABC.png)
3.Pour changer le titre de la barre de navigation (par exemple: [Police: Futura, 10] [Couleur: Rouge])
J'espère que je peux aider!: D
la source
Utilisez le code ci-dessous dans n'importe quelle méthode viewDidLoad ou viewWillAppear du contrôleur de vue.
la source
Court et doux.
la source
Ceci est ma solution basée sur Stevens
La seule vraie différence est que je mets un peu de manipulation pour ajuster la position si, selon la longueur du texte, cela semble être similaire à la façon dont Apple le fait
Vous souhaiterez peut-être ajuster la valeur 10 en fonction de la taille de votre police
la source
J'ai rencontré le problème avec mes boutons de navigation jetant le texte hors du centre (quand vous n'avez qu'un seul bouton). Pour résoudre ce problème, je viens de changer la taille de mon cadre comme suit:
la source
J'ai personnalisé l'image d'arrière-plan de navigationBar et l'élément de bouton gauche, et le titre gris ne correspond pas à l'arrière-plan. Ensuite j'utilise:
pour changer la couleur de la teinte en gris. Et le titre est blanc maintenant! C'est ce que je veux.
Au plaisir d'aider aussi :)
la source
Il est recommandé de définir self.title car il est utilisé lorsque vous appuyez sur les barres de navigation enfant ou que vous affichez le titre sur les barres de tabulation.
la source
Il s'agit d'un fil assez ancien, mais je pense fournir une réponse pour définir la couleur, la taille et la position verticale du titre de la barre de navigation pour iOS 7 et supérieur
Pour la couleur et la taille
Pour la position verticale
Définir le titre et attribuer le dictionnaire d'attributs
la source
Cela fonctionne pour moi dans Swift:
la source
navigationController?.navigationBar.titleTextAttributes = { if let currentAttributes = navigationController?.navigationBar.titleTextAttributes { var newAttributes = currentAttributes newAttributes[NSForegroundColorAttributeName] = navigationTintColor return newAttributes } else { return [NSForegroundColorAttributeName: navigationTintColor]}}()
self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName : UIColor.redColor};
Version Swift 4 et 4.2:
la source
la source
pour définir la taille de la police du titre, j'ai utilisé les conditions suivantes .. peut-être utile à tout le monde
la source
Une mise à jour du message d'Alex RR utilisant les nouveaux attributs de texte iOS 7 et l'objectif moderne c pour moins de bruit:
la source
Je crois que la bonne façon de définir la couleur de
UINavigationBar
:Le code ci-dessus est écrit en sous-classe
UINavigationBar
, fonctionne évidemment sans sous-classe également.la source
[UINavigationBar appearance]
et définir des attributs de texte de titre là-bas (compte tenu de la ruse impliquée dans le sousUINavigationBar
- classement , une solution préférable).Utilisez comme ceci pour le support d'orientation
la source
C'est l'une de ces choses qui manquent. Votre meilleur pari 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.
la source
Après avoir rencontré le même problème (que les autres) de l'étiquette qui se déplace lorsque nous insérons un bouton dans la barre de navigation (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, voici donc ce qui a fonctionné et a gardé le label au même endroit tout le temps:
la source
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 du titre lorsque d'autres boutons occupent la barre de navigation.
la source
Peut utiliser cette méthode dans le fichier appdelegate et peut utiliser à chaque vue
la source
titleTextAttributes Affiche les attributs du 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 d'attributs de texte, à l'aide des clés d'attribut de texte décrites dans la référence NSString UIKit Additions Reference.
Disponibilité Disponible dans iOS 5.0 et versions ultérieures. Déclaré dans UINavigationBar.h
la source