iPhone de Navigation de la Barre de Titre de la couleur du texte
Il semble que l'iOS de Navigation de la Barre de titre, la couleur est blanc par défaut. Est-il un moyen de le changer pour une autre couleur?
Je suis conscient de la navigationItem.titleView
approche en utilisant une image. Depuis mes compétences de conception sont limitées et je n'ai pas réussi à obtenir la norme brillant, je préfère changer la couleur du texte.
Aucune information serait très apprécié.
- Je viens de poster un morceau de code, basé sur Steven Fisher réponse, qui simplifie le processus d'ajout de couleur des titres à votre barre de navigation. Il prend également en charge la modification du titre. Regardez pour elle! Il ne vous décevra pas.
- Erik: j'ai mis une note au sujet de votre réponse dans la mienne. Je venais tout juste de mettre à jour ma réponse avec votre code, mais je ne veux pas prendre vos votes. Solution intelligente, btw.
InformationsquelleAutor | 2009-03-01
Vous devez vous connecter pour publier un commentaire.
Approche moderne
D'une façon moderne, pour l'ensemble de la manette de navigation... le faire une fois, lors de votre navigation sur le contrôleur de vue de la racine est chargé.
Cependant, cela ne semble pas avoir un effet dans les vues suivantes.
Approche classique
À l'ancienne, par-vue-contrôleur (ces constantes sont pour iOS 6, mais si vous voulez le faire par-vue-contrôleur sur iOS 7 l'apparence, vous voudrez la même approche, mais avec différentes constantes):
Vous devez utiliser un
UILabel
comme letitleView
de lanavigationItem
.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 anciens Sdk).Définir le texte de l'étiquette de la couleur à être personnalisé quel que soit la couleur que vous souhaitez. Vous voulez une couleur qui n'est pas de rendre le texte pour se fondre dans l'ombre, ce qui serait difficile à lire.
J'ai travaillé par essais et erreurs, mais les valeurs que je suis venu avec sont finalement trop simple pour eux de ne pas être ce qu'Apple a choisi. 🙂
Si vous voulez vérifier cela, supprimer ce code dans
initWithNibName:bundle:
dansPageThreeViewController.m
de Apple barre de navigation de l'échantillon. Cela permettra de remplacer le texte par une étiquette jaune. Ce devrait être identique à l'originale produite par Apple code, à l'exception de la couleur.Edit: Aussi, lire Erik B de la réponse ci-dessous. Mon code montre l'effet, mais son code offre un moyen plus simple de tomber en place sur une vue existante contrôleur.
UIViewController
s créé à l'intérieur d'interface builder (et à l'aide d'une sous-classe personnalisée de cours). La fonction est appelée, mais pour une raison quelconque, l'affichage personnalisé ne s'affiche pas.backgroundColor
àblackColor
, le fond ne pas remplir toute la largeur de l'écran. j'ai essayé de changer la largeur, et il ne bronche pas. pouah!sizeWithFont:
, il va automatiquement prendre sur l'alignement automatique du comportement de la norme de l'étiquette.UITextAlignmentCenter
est obsolète, pasNSTextAlignmentCenter
.Je sais que c'est un assez vieux thread, mais je pense qu'il serait utile de savoir pour les nouveaux utilisateurs d'iOS 5 apporte une nouvelle propriété pour l'établissement d'un titre de propriétés.
Vous pouvez utiliser UINavigationBar de
setTitleTextAttributes
pour le réglage de la police, de la couleur, du décalage et de la couleur de l'ombre.En outre, vous pouvez définir le même défaut UINavigationBar Titre du Texte, les Attributs de toutes les
UINavigationBars
tout au long de votre application.Par exemple comme ceci:
Dans iOS 5, vous pouvez modifier le navigationBar couleur du titre de cette manière:
UITextAttributeTextColor
àNSForegroundColorAttributeName
. Fonctionne comme un charme!self.navigationController.navigationBar.tintColor
ne fonctionne pas pour moi. Ce n'.Basé sur Steven Fisher réponse que j'ai écrit ce morceau de code:
L'avantage de ce code, outre composer avec l'image correctement, c'est que si vous modifiez le titre de votre contrôleur de la coutume de titre de la vue seront également mises à jour. Pas besoin de le mettre à jour manuellement.
Un autre grand avantage est que c'est vraiment simple pour permettre à titre personnalisé de couleur. Tout ce que vous devez faire est d'ajouter cette méthode pour le contrôleur.
La plupart des suggestions ci-dessus sont obsolètes maintenant, pour iOS 7 -
Aussi, la caisse de la NSAttributedString.h pour les différentes propriétés de texte qui pourrait être créé.
Dans IOS 7 et 8, vous pouvez modifier la couleur du Titre de disons vert
self.navigationController!.navigationBar.titleTextAttributes = NSDictionary(object: UIColor.whiteColor(), forKey: NSForegroundColorAttributeName) as [NSObject : AnyObject]
self.navigationController!.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]
De garder la question à jour, je vais ajouter Alex R. R. solution, mais dans Swift:
Qui se traduit à l':
Méthode 1, la mettre dans de l'IB:
Méthode 2, une seule ligne de code:
titleTextAttributes
seulementLa solution par tewha fonctionne bien si vous essayez de changer la couleur sur une page, mais je veux être en mesure de modifier la couleur sur chaque page. J'ai fait quelques petites modifications pour que cela fonctionne pour tous pages sur un
UINavigationController
NavigationDelegate.h
NavigationDelegate.m
À partir de iOS 5, nous avons à mettre en titre, le texte et la couleur de la police de la barre de navigation à l'aide de titleTextAttribute Dictionnaire(dictionnaire prédéfini dans UInavigation contrôleur de la classe de référence).
Swift Version
J'ai trouvé la plupart d'entre vous les gars a présenté les réponses de Objective_C version
J'aimerais implémenter cette fonction par l'utilisation de Swift pour quelqu'un qui en a besoin.
Dans Le ViewDidload
1.Pour faire NavigationBar arrière-plan devient de couleur (par exemple: BLEU)
2.Pour faire NavigationBar arrière-plan devient de l'Image (par exemple : ABC.png)
3.Pour changer NavigationBar titre (par exemple :[Font:Futura,10] [Color:Red])
J'espère que je peux aider!:D
Utiliser le code ci-dessous dans n'importe quelle vue contrôleur viewDidLoad ou viewWillAppear méthode.
Court et doux.
C'est ma solution basée sur Stevens
Seule vraie différence est, j'ai mis quelques manipulation pour ajuster la position en fonction de la longueur du texte, semble être similaire à la façon dont apple faire
Vous pouvez régler le 10 valeur en fonction de votre taille de la police
J'ai rencontré le problème avec mon nav boutons de jeter le texte de centre (lorsque vous n'avez qu'un seul bouton). Pour corriger ça, je viens de changer mon image de la taille de la sorte:
J'ai personnalisé l'navigationBar de l'image d'arrière-plan et le bouton de gauche de l'élément, et le titre grise correspondent pas à l'arrière-plan. Puis-je utiliser:
pour changer la teinte de gris. Et le titre est blanc maintenant! C'est ce que je veux.
L'espoir d'aider aussi 🙂
Il est recommandé de configurer soi-même.titre de ce est utilisé, tout en poussant l'enfant navbars ou de montrer son titre sur tabbars.
C'est un assez vieux thread mais je pense que de fournir de réponse pour le réglage de la Couleur, la Taille et la Position Verticale de la Navigation de la Barre de Titre pour iOS 7 et au-dessus de
Pour la Couleur et la Taille
Pour Une Position Verticale
Titre du jeu et affecter les attributs dictionnaire
Cela fonctionne pour moi en Swift:
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};
pour définir la taille de la police du titre j'ai utilisé les conditions suivantes.. peut-être utile à quelqu'un
Une mise à jour de Alex R. R. de la poste en utilisant le nouvel iOS 7 attributs de texte et moderne objective c pour moins de bruit:
L'utilisation de ce genre pour l'Orientation de l'
C'est une de ces choses qui manquent. Votre meilleur pari est de créer votre propre Barre de Navigation personnalisée, ajoutez une zone de texte, et de manipuler la couleur de cette façon.
Après avoir rencontré le même problème (comme d'autres) de l'étiquette qui se déplace lorsque nous insérer un bouton dans la barre de navigation (dans mon cas, j'ai un compteur que j'ai remplacer par un bouton lorsque la date est chargé), les solutions ci-dessus ne fonctionne pas pour moi, donc, voici ce qui a fonctionné et a gardé l'étiquette au même endroit tout le temps:
Swift 4 version:
Je crois que la bonne façon de définir la couleur de
UINavigationBar
est:Code ci-dessus est écrit dans la sous-classe sur
UINavigationBar
, à l'évidence fonctionne sans sous-classement en tant que bien.[UINavigationBar appearance]
et le titre du jeu d'attributs de texte il y a (en tenant compte de la supercherie impliqués dans le sous-classementUINavigationBar
, une bonne solution).Vous devriez appeler [label sizeToFit]; après la mise en place du texte pour éviter étrange décalages lorsque l'étiquette est automatiquement repositionné dans le titre de la vue lorsque d'autres boutons occuper la barre de navigation.
Pouvez utiliser cette méthode dans appdelegate fichier et peut l'utiliser à chaque vue
titleTextAttributes
Les attributs d'affichage de la barre de titre du texte.
@property(nonatomic, copie) NSDictionary *titleTextAttributes
Discussion
Vous pouvez spécifier la police, la couleur du texte, du texte la couleur de l'ombre, et l'ombre du texte de décalage pour le titre dans le texte les attributs de dictionnaire, à l'aide de l'attribut de texte touches décrites dans NSString UIKit Ajouts de Référence.
Disponibilité
Disponible en iOS 5.0 et versions ultérieures.
Déclaré Dans
UINavigationBar.h
Afin de rendre Erik B est une grande solution plus utilisable dans les différents UIVIewCOntrollers de votre application que je recommande d'ajouter une catégorie pour les UIViewController et de déclarer son setTitle:titre de la méthode à l'intérieur. Comme cela, vous pouvez obtenir le titre de changement de couleur sur tous les contrôleurs de vue, sans la nécessité de la répétition.
Une chose à noter, c'est que vous n'avez pas besoin [super setTItle:tilte]; dans Erik de code et que vous aurez besoin d'appeler explicitement l'auto.title = @"mon nouveau titre" à votre avis, les contrôleurs pour que cette méthode soit appelée
@fin
Je suis à l'aide de code ci-dessous pour l'iOS 9 et sa fonctionne très bien pour moi. J'ai aussi utiliser la couleur de l'ombre pour le titre.
Cela peut vous aider.
Grâce