web-dev-qa-db-fra.com

iPhone Définir la couleur de la teinte du bouton de la barre arrière

J'essaie de définir la couleur de teinte du bouton de retour dans un contrôleur de navigation, mais rien ne fonctionne. j'ai essayé

[self.navigationController.backBarButtonItem setTintColor:myColor];
//myColor was previously set

Mais il reste la teinte par défaut

18
user717452

Je crois que barButtonItem est en lecture seule. (Je ne suis pas trop sûr de ça, quelqu'un me corrige si je me trompe)

Pour donner une teinte à ces boutons, voici ce que je ferais:

Dans votre délégué d'application, ajoutez ces lignes de code:

UIBarButtonItem *barButtonAppearance = [UIBarButtonItem appearance];
[barButtonAppearance setTintColor:[UIColor redColor]]; // Change to your colour

La première ligne définit un proxy d'apparence, donc je pense que cela fonctionne aussi, si vous aimez moins de code:

[[UIBarButtonItem appearance] setTintColor:[UIColor redColor]];

J'espère que cela fonctionne pour vous! (Cela modifie toutes les instances de UIBarButtonItem)

35
Qiming

Vous ne pouvez pas modifier directement la couleur de teinte de UINavigationItem. Vous devez changer la couleur de teinte de la barre de navigation et votre bouton de barre changera automatiquement sa couleur.

Ajoutez ces lignes dans votre méthode viewWillAppear

[[self.navigationController navigationBar] tintColor] = [UIColor myColor];

Ou vous pouvez créer un bouton personnalisé et initialiser votre UIBarButtonItem comme

UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:yourUIButton];
32
Deepak Singh Negi

Cela a fonctionné pour moi.

[self.navigationController.navigationBar setTintColor:[UIColor redColor]];

C'est très similaire à la deuxième réponse ...

25
Eric

Si vous préférez le faire dans Interface Builder sans écrire de code:

  1. Sélectionnez votre UINavigationBar (dans UINavigationController)

enter image description here

  1. Dans l'inspecteur des attributs, recherchez "Teinte" - c'est ce qui définit la couleur du bouton Retour. Notez que "Bar Tint" n'est pas le même - cela définit la couleur d'arrière-plan de la barre de navigation.

enter image description here

Il est important de définir l'apparence du bouton arrière de cette façon et de ne pas essayer d'implémenter leftBarButtonItem, car l'implémentation de leftBarButtonItem désactivera les gestes de navigation arrière intégrés, comme glisser pour revenir en arrière.

4
Alex

Façon rapide:

Il modifie tous les éléments de la navigation.

Dans AppDelegate, faites quelque chose comme ceci:

let navControl = UINavigationBar.appearance()
    navControl.tintColor = UIColor.grayColor()
1
Joseph Geraghty

Si vous souhaitez le définir sur un style prédéfini, vous pouvez utiliser

    [navigationBar setBarStyle: UIBarStyleBlack];
0
r0ro

Eh bien, vous pouvez certainement changer la couleur du bouton Retour ou de n'importe quel bouton de la barre de navigation. Voici un petit extrait pour le faire.

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonItemStylePlain target:self action:nil];
backButton.tintColor = [UIColor blackColor];
[self.navigationItem setBackBarButtonItem:backButton];
[backButton release];

Eh bien, ce n'est qu'une des façons de le faire. J'espère que ça aide!! Je sais que la réponse est déjà acceptée, mais j'ai pensé à lui donner un extrait approprié. À votre santé!!! Codage heureux !!

0
Apple_iOS0304

Ça marche toujours pour moi:

  1. self.navigationItem.leftBarButtonItem = [self logicToAddBackButton];

  2. OBTENIR LE BOUTON RETOUR PAR DÉFAUT

-

(UIBarButtonItem*) logicToAddBackButton
        {
            UIImageView *imageView;

            // [imageView setTintColor:[UIColor redColor]];
            UILabel *label=[[UILabel alloc] init];
            if (WHITEBACK) {
                imageView  =[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"UiNavigationBackIPAD"]];
                [label setTextColor:[UIColor whiteColor]];
            }else{ //DEFAULTBACK
                imageView  =[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"UiNavigationBack"]];
                [label setTextColor:[UIColor colorWithRed:0.0 green:122.0/255.0 blue:1.0 alpha:1.0]];

            }

            [label setText:@"Back"];
            [label sizeToFit];

            int space=6;
            label.frame=CGRectMake(imageView.frame.Origin.x+imageView.frame.size.width+space,
    label.frame.Origin.y, label.frame.size.width,
    label.frame.size.height);
            UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0, label.frame.size.width+imageView.frame.size.width+space,
    imageView.frame.size.height)];

            view.bounds=CGRectMake(view.bounds.Origin.x+8, view.bounds.Origin.y-1, view.bounds.size.width,
    view.bounds.size.height);


            UIButton *button=[[UIButton alloc] initWithFrame:CGRectMake(view.bounds.Origin.x, view.bounds.Origin.y,
    view.bounds.size.width, view.bounds.size.height)];
            button.bounds=CGRectMake(view.bounds.Origin.x, view.bounds.Origin.y, view.bounds.size.width,
    view.bounds.size.height);
            [button addTarget:self action:@selector(eventBack) forControlEvents:UIControlEventTouchUpInside];
            [button addSubview:imageView];
            [button addSubview:label];


            [UIView animateWithDuration:0.33 delay:0 options:UIViewAnimationOptionCurveLinear animations:^{
                label.alpha = 0.0;
                CGRect orig=label.frame;
                label.frame=CGRectMake(label.frame.Origin.x+25, label.frame.Origin.y -5, label.frame.size.width,
    label.frame.size.height+10);
                label.alpha = 1.0;
                label.frame=orig;
            } completion:nil];

            UIBarButtonItem *backButton =[[UIBarButtonItem alloc] initWithCustomView:button];


            return backButton;
        }
  • ACTION DU BOUTON ARRIÈRE

    (void) eventBack {[self.navigationController popViewControllerAnimated: YES]; }

  • UiNavigationBack Image (Veuillez changer la couleur de l'image selon les besoins avec la même taille [25X41 144 pixels/pouce] pour obtenir l'aspect par défaut) enter image description here

0
Yogesh Lolusare

Placez le code suivant dans AppDelegate qui définira la couleur du bouton Retour globalement

//Set color of BackButtonItem globally

[[UIBarButtonItem appearance] setTintColor:[UIColor colorWithRed:5.0/255.0 
green:127.0/255.0 blue:173.0/255.0 alpha:1.0]];

Ceci est pris en charge dans iOS 5 et supérieur

0
Jayprakash Dubey

Ce qui a fonctionné pour moi, c'est ceci:

self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor textPrimaryColor] forKey:NSForegroundColorAttributeName];
0
Nilesh Agrawal