2016-07-25 1 views
3

Ceci est ma conception dans Sketch:différence de couleur entre UINavigationBar Couleur Teinte et reste de l'application dans l'IOS

enter image description here

Sketch dit que la couleur bleue est 70164239.

J'ai le code suivant pour mon onglet:

UINavigationBar.appearance().barTintColor = UIColor(red: 70.0/255.0, green: 164.0/255.0, blue: 239.0/255.0, alpha: 1.0) 
UINavigationBar.appearance().tintColor = UIColor.clearColor() 
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor.whiteColor()] 

Et ce qui suit pour la vue de dessous (à l'intérieur d'une action):

self.two_buttons_view.backgroundColor = UIColor(red: 70.0/255.0, green: 164.0/255.0, blue: 239.0/255.0, alpha: 1.0) 

Mais regardez ce qui se passe, la barre de navigation la couleur est toujours un peu plus claire que la couleur de la vue. Avec ce bleu clair, il y a seulement une légère différence, mais si je pars avec un bleu plus foncé, ça devient beaucoup plus visible. Il semble que les couleurs de la barre de navigation ne sont jamais aussi riche que le reste des pages vues sont:

enter image description here

Répondre

14

Le tintColor est une teinte couleur. Il combine avec la translucidité (est-ce un mot?) De la barre, avec ce qui est derrière la barre, pour donner une autre couleur qui en résulte.

Si vous voulez un contrôle total sur la réelle couleur d'une barre de navigation, définissez son translucent à false puis lui donner une image de fond composé d'un rectangle de la couleur désirée - et pas de couleur de teinte.

+2

Merci, @matt. UINavigationBar.appearance(). Translucent = false était tout ce qui était nécessaire dans mon cas, il semble superbe maintenant même quand il suffit de définir la couleur elle-même via la couleur de couleur –

+2

Dans Swift 3 cela a changé pour: UINavigationBar.appearance(). IsTranslucent = false –

+0

Vous n'avez pas besoin de lui donner une image d'arrière-plan. Vous pouvez simplement définir son backgroundColor. – Harris