Je sais comment changer le UINavigationBar
image de fond en faisant
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"nabbar"] forBarMetrics:UIBarMetricsDefault];
et je sais comment régler la barre sur des couleurs différentes dans chaque Views
..... Maintenant, je veux changer la couleur d'arrière-plan sans utiliser une image à une couleur unie du app delegate
. Je ne veux pas le paramétrer à chaque fois à partir de chaque vue et je ne veux pas écrire de fichier CGRect
.
J'ai essayé [[UINavigationBar appearance] setBackgroundColor:[UIColor colorWithRed:33/255.0 green:34/255.0 blue:36/255.0 alpha:1.0]];
mais je ne fonctionne pas et je ne trouve nulle part de code qui fonctionne dans le délégué d'application.
Quelqu'un pourrait-il s'il vous plaît me diriger dans la bonne direction?
la source
tintColor
le dégradé restera. Si vous ne souhaitez pas avoir ce dégradé, vous devez sous-classer votre UINavigationBar OU créer une UIImage pour l'apparence.navigationBar.barTintColor = myColor;
translucent
La propriété ne peut tout simplement pas être définie à l'aide de UIAppearance dans iOS 6 et iOS 7. Donc[[UINavigationBar appearance] setTranslucent:NO]
, l'application plantera avec uneNSInvalidArgumentException
erreur. Utilisez[self.navigationController.navigationBar setTranslucent:NO]
ou désélectionnez la transparence à l'aide d'IB.UINavigationBar.appearance().barTintColor = myColor
UINavigationBar.appearance().isTranslucent = false
Pour changer la couleur d'arrière-plan et non la teinte, le morceau de code suivant fonctionnera:
la source
UIViewControllers
, tandis que celle-ci affichera des effets à chaque appel.Pour faire cela dans iOS 7:
la source
Syntaxe Swift:
Je viens de mettre cela dans AppDelegate didFinishLaunchingWithOptions et cela persiste dans toute l'application
la source
Swift :
la source
Vous pouvez facilement le faire avec Xcode 6.3.1. Sélectionnez votre NavigationBar dans la structure du document. Sélectionnez l'inspecteur d'attributs. Décochez Translucide. Réglez Bar Tint sur la couleur souhaitée. Terminé!
la source
Comme le mentionnent les autres réponses, vous pouvez utiliser
setTintColor:
, mais vous voulez une couleur unie et il n'est pas possible de définir la couleur de teinte AFAIK.La solution consiste à créer une image par programme et à définir cette image comme image d'arrière-plan pour toutes les barres de navigation via
UIAppearance
. À propos de la taille de l'image, je ne sais pas si une image de 1x1 pixel fonctionnerait ou si vous avez besoin de la taille exacte de la barre de navigation. cette question pour voir comment créer l'image.En guise de conseil, je n'aime pas «surcharger» le délégué d'application avec ce type de choses. Ce que j'ai tendance à faire est de créer une classe nommée
AppearanceConfiguration
avec une seule méthode publique dansconfigureAppearance
laquelle je définis tous les éléments UIAppearance que je veux, puis j'appelle cette méthode à partir du délégué d'application.la source
Vous pouvez définir la couleur d'arrière-plan UINavigation en utilisant ce code dans n'importe quel contrôleur de vue
la source
Dans Swift 4.2 et Xcode 10.1
Vous pouvez modifier la couleur de votre barre de navigation depuis votre AppDelegate directement vers l'ensemble de votre projet.
En
didFinishLaunchingWithOptions launchOptions:
écrivez ci-dessous aux lignes de codeIci
tintColor sert à définir les images d'arrière-plan telles que les images du bouton de retour et des lignes de menu, etc. (voir l'image du menu gauche et droite ci-dessous)
barTintColor est pour la couleur d'arrière-plan de la barre de navigation
Si vous souhaitez définir la couleur de la barre de navigation du contrôleur de vue spécifique, écrivez le code ci-dessous dans
viewDidLoad()
la source
Le code couleur est le problème ici. Au lieu d'utiliser 195/255, utilisez 0.7647 ou 195.f / 255.f Le problème est que la conversion du flottant ne fonctionne pas correctement. Essayez d'utiliser la valeur flottante exacte.
la source