J'utilise une vue Sélecteur pour permettre à l'utilisateur de choisir le thème de couleur pour l'application entière.
Je prévois de changer la couleur de la barre de navigation, de l'arrière-plan et éventuellement de la barre d'onglets (si cela est possible).
J'ai cherché comment faire mais je ne trouve aucun exemple Swift. Quelqu'un pourrait-il me donner un exemple du code que je devrais utiliser pour changer la couleur de la barre de navigation et la couleur du texte de la barre de navigation?
La vue Picker est configurée, je cherche juste le code pour changer les couleurs de l'interface utilisateur.
la source
Voici une personnalisation d'apparence très basique que vous pouvez appliquer à l'échelle de l'application:
Plus d'informations sur l'
UIAppearance
API dans Swift, vous pouvez lire ici: https://developer.apple.com/documentation/uikit/uiappearancela source
Mis à jour pour Swift 3, 4, 4.2, 5+
Swift 4
Swift 4.2, 5+
Vous pouvez également vérifier ici: https://github.com/hasnine/iOSUtilitiesSource
la source
Collez simplement cette ligne
didFinishLaunchingWithOptions
dans votre code.la source
Dans AppDelegate , cela a globalement changé le format de la NavBar et supprime la ligne de fond / la bordure (qui est un problème pour la plupart des gens) pour vous donner ce que je pense que vous et les autres recherchez:
Ensuite, vous pouvez configurer un fichier Constants.swift , et contient une structure de style avec des couleurs et des polices, etc. Vous pouvez ensuite ajouter une tableView / pickerView à n'importe quel ViewController et utiliser le tableau "availableThemes" pour permettre à l'utilisateur de changer themeColor.
La belle chose à ce sujet est que vous pouvez utiliser une référence dans toute votre application pour chaque couleur et elle se mettra à jour en fonction du "Thème" sélectionné par l'utilisateur et sans celle-ci, elle sera par défaut theme1 ():
la source
Pour ce faire sur le storyboard (Interface Builder Inspector)
Avec l'aide de
IBDesignable
, nous pouvons ajouter plus d'options à Interface Builder InspectorUINavigationController
et les modifier sur le storyboard. Tout d'abord, ajoutez le code suivant à votre projet.Ensuite, définissez simplement les attributs du contrôleur de navigation sur le storyboard.
Cette approche peut également être utilisée pour gérer la couleur du texte de la barre de navigation à partir du storyboard:
la source
Swift 4:
Code fonctionnant parfaitement pour changer l'apparence de la barre de navigation au niveau de l'application.
Codage heureux!
la source
travaillé pour moi
la source
SWIFT 4 - Transition en douceur (meilleure solution):
Si vous revenez d'un contrôleur de navigation et que vous devez définir une couleur différente sur le contrôleur de navigation que vous avez poussé, vous souhaitez utiliser
au lieu de le placer dans la vueWillAppear pour que la transition soit plus nette.
SWIFT 4.2
la source
Dans Swift 4
Vous pouvez changer la couleur de la barre de navigation. Utilisez simplement cet extrait de code ci-dessous dans
viewDidLoad()
Couleur de la barre de navigation
Couleur du texte de la barre de navigation
Pour la barre de navigation des grands titres iOS 11 , vous devez utiliser la
largeTitleTextAttributes
propriétéla source
La
appearance()
fonction ne fonctionne pas toujours pour moi. Je préfère donc créer un objet CN et changer ses attributs.De plus, si vous souhaitez ajouter une image au lieu de simplement du texte, cela fonctionne aussi
la source
Utilisez l'API d'apparence et la couleur barTintColor.
la source
iOS 8 (rapide)
la source
Si vous avez un contrôleur de navigation personnalisé, vous pouvez utiliser l'extrait de code ci-dessus. Donc, dans mon cas, j'ai utilisé comme morceaux de code suivants.
Swift 3.0, version XCode 8.1
Texte de la barre de navigation:
Ce sont des discussions très utiles.
la source
Mise à jour Swift 4, iOS 12 et Xcode 10
Il suffit de mettre une ligne à l'intérieur
viewDidLoad()
la source
Dans Swift 2
Pour changer la couleur dans la barre de navigation,
Pour changer la couleur dans la barre de navigation des éléments,
ou
la source
Swift 3
Cela définira la couleur de votre barre de navigation comme la couleur de la barre Facebook :)
la source
Xcode 9 compatible avec Swift 3 et Swift 4
Une meilleure solution pour créer une classe pour les barres de navigation courantes
J'ai 5 contrôleurs et chaque titre de contrôleur est changé en couleur orange. Comme chaque contrôleur dispose de 5 contrôleurs de navigation, j'ai donc dû changer chaque couleur soit de l'inspecteur, soit du code.
J'ai donc créé une classe au lieu de changer chaque barre de navigation à partir du code, j'assigne simplement cette classe et cela a fonctionné sur les 5 capacités de réutilisation du code du contrôleur. Vous n'avez qu'à assigner cette classe à chaque contrôleur et c'est tout.
la source
iOS 10 Swift 3.0
Si cela ne vous dérange pas d'utiliser des cadres rapides, utilisez-nous UINeraida pour changer l'arrière-plan de navigation en
UIColor
ouHexColor
ouUIImage
et changer le texte du bouton de navigation par programme, changez la couleur du texte de fond .Pour
UINavigationBar
la source
Swift 3
Une doublure simple que vous pouvez utiliser
ViewDidLoad()
la source
Cette version supprime également la ligne d'ombre 1px sous la barre de navigation:
Swift 5: Mettez cela dans votre AppDelegate didFinishLaunchingWithOptions
la source
je devais faire
sinon la couleur d'arrière-plan ne changerait pas
la source
Définissez d'abord la propriété isTranslucent de navigationBar sur false pour obtenir la couleur souhaitée. Modifiez ensuite la couleur de la barre de navigation comme ceci:
la source
Assurez-vous de définir l' état du bouton pour .normal
PS iOS 12, Xcode 10.1
la source
topItem
solution. C'est frustrant le nombre de changements qu'Apple continue d'apporter à la façon dont les styles sont appliqués à la navigation.appelez simplement cette extension et passez la couleur, cela changera automatiquement la couleur de la barre de navigation
dans la vue didload ou dans la vue apparaîtra l'appel
self.navigationController? .setNavigationBarColor (couleur: <# T ## UIColor #>)
la source
la source
J'écris ceci pour ceux qui ont encore des problèmes avec les solutions ici.
J'utilise Xcode version 11.4 (11E146). Celui qui travaille pour moi est:
MAIS !, si vous définissez le barTintColor dans le storyboard sur une autre valeur que "par défaut", ces 2 lignes de code n'auront aucun effet.
Donc, soyez prudent et revenez à barTintColor par défaut dans Storyboard. Oh Apple ...
la source
Ajoutez ces lignes à votre AppDelegate dans la fonction didFinishLaunchingWithOptions:
cette ligne est pour l'arrière-plan de votre barre de navigation.
cette ligne est si votre pas est translucide à faux, il affichera une couleur blanche lors de la navigation.
cette ligne est pour vos textes et icônes sur la barre de navigation
cette ligne nous pour tout descendre dans votre barre de navigation.
la source