web-dev-qa-db-fra.com

UINavigationBar set tintcolor testé dans iOS7 ne fonctionne pas?

J'ai une application qui a un UINavigationBar et j'ai défini la couleur de la teinte sur noir comme ceci:

self.navigationController.navigationBar.tintColor = [UIColor blackColor];`

Je l'ai testé dans IOS 6 et il est noir. Cependant, il apparaît comme la barre de navigation par défaut lorsque j'ai essayé la même application dans iOS 7.

Comme le titre l'indique, cela ne fonctionne-t-il pas?

21
veereev

Vous devez définir la propriété barTintColor.

Vous pouvez spécifier une couleur de teinte personnalisée pour l'arrière-plan de la barre de navigation à l'aide du champ Teinte (barTintColor). La couleur de teinte d'arrière-plan par défaut est le blanc.

Depuis les documents iOS7: https://developer.Apple.com/library/content/documentation/UserExperience/Conceptual/UIKitUICatalog/UINavigationBar.html#//Apple_ref/doc/uid/TP40012857-UINavigationBar-SW1

22
Hector Matos

Les réponses de Fernando et de sanjana ont la clé, mais je vais juste ajouter quelque chose pour le rendre plus clair et plus évident.

La barre de navigation a deux propriétés

  • tintColor
  • barTintColor

C'est un peu trompeur lorsque vous ne pensez pas en termes iOS 7.

tintColor change la couleur des boutons de votre barre de navigation. Pour modifier la couleur d'arrière-plan, vous devez définir la propriété barTintColor.

self.navigationController.navigationBar.barTintColor = [UIColor whiteColor];
self.navigationController.navigationBar.tintColor = [UIColor greenColor];

Cet extrait de code vous donnera une barre de navigation blanche avec des boutons verts.

16
Irina Anastasiu

J'ai utilisé le code suivant pour changer la couleur de la barre de navigation dans iOS7, j'ai ajouté cela dans la méthode déléguée de l'application "applicationDidFinishLaunch" et son travail fonctionne bien pour moi:

/* ios 7 Change */
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7)
    {
        [[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0x4B678B)];
        NSShadow *shadow = [[NSShadow alloc] init];
        shadow.shadowColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8];
        shadow.shadowOffset = CGSizeMake(0, 1);
        [[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:
                                                               [UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1.0], NSForegroundColorAttributeName,
                                                               shadow, NSShadowAttributeName,
                                                               [UIFont fontWithName:@"Helvetica Neue" size:21.0], NSFontAttributeName, nil]];
        // self.navigationController.navigationBar.barTintColor = [UIColor blueColor];
        //[self.navigationController.navigationBar setBarStyle:UIBarStyleBlackTranslucent];
        [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];

    }
9
Divya Bhalodiya

Le code suivant fonctionne pour moi:

self.navigationController.navigationBar.barTintColor = [UIColor blackColor];
4
sanjana

A eu le même problème, mais l'a résolu via un fichier de storyboard.

Essayez ce qui suit.

  1. Ouvrez votre fichier .storyboard.
  2. Sélectionnez la scène avec le contrôleur de navigation
  3. Sélectionner l'élément de barre de navigation dans la scène du contrôleur de navigation enter image description here

  4. Ouvrez l'onglet Utilitaires sur le côté droit de XCode

  5. Inspecteur des attributs ouverts
  6. Dans le groupe "Barre de navigation", il y aura une liste déroulante Teinte de la barre. Vous pouvez choisir n'importe quelle couleur pour une teinte. enter image description here
4
forallepsilon
    [UINavigationBar appearance].tintColor = [UIColor redColor];
    if ([[UINavigationBar appearance] respondsToSelector:@selector(setBarTintColor:)]) {
        [UINavigationBar appearance].barTintColor   = [UIColor redColor];
    }

//OU

    self.navigationController.navigationBar.tintColor = [UIColor redColor];
    if ([self.navigationController.navigationBar respondsToSelector:@selector(setBarTintColor:)]) {
        self.navigationController.navigationBar.barTintColor    = [UIColor redColor];
    }
3
Chamira Fernando