web-dev-qa-db-fra.com

Comment changer la couleur de police/Couleur de texte de UIBarButtonItem dans la barre de navigation

J'ajoute un bouton de barre à la barre de navigation par programmation comme suit

UIBarButtonItem *cancel = [[UIBarButtonItem alloc] initWithTitle:@"CANCEL" style:UIBarButtonItemStyleBordered target:self action:@selector(goToPreviousView)];
    self.navigationItem.leftBarButtonItem = cancel;

Maintenant, je veux afficher Texte "ANNULER" en ROUGE Couleur .

Je veux dire que je dois changer le texte sur les éléments du bouton de la barre , mais pas la couleur de teinte du bouton.

Comment faire ça?

23
user1645721

Une autre méthode est: -

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setBackgroundImage:[UIImage imageNamed:@"delete.png"] forState:UIControlStateNormal];
[button setTitle:@"Delete" forState:UIControlStateNormal];
 button.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:12.0f];
[button.layer setCornerRadius:4.0f];
[button.layer setMasksToBounds:YES];
[button.layer setBorderWidth:1.0f];
[button.layer setBorderColor: [[UIColor grayColor] CGColor]];
button.frame=CGRectMake(0.0, 100.0, 60.0, 30.0);
[button addTarget:self action:@selector(batchDelete)  forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem* deleteItem = [[UIBarButtonItem alloc] initWithCustomView:button];
7
IronManGill

Regarde ça :-

  UIBarButtonItem *cancel = [[UIBarButtonItem alloc] initWithTitle:@"Title" style:UIBarButtonItemStyleBordered target:nil action:nil];
[cancel setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIColor redColor],  UITextAttributeTextColor,nil] forState:UIControlStateNormal];
104
IronManGill

Juste une mise à jour iOS7 avec la syntaxe moderne Obj-C:

[barButtonItem setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor redColor]} forState:UIControlStateNormal];
31
GangstaGraham
UITextAttributeTextColor //Is deprecated on iOS 7. 

Ce code est utilisé pour changer la couleur du texte à partir de proxy d'apparence.

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

ce code est utilisé pour changer la couleur du texte de UIBarButtonItem dans la barre de navigation: 

UILabel *lblTotCaratteri = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 50, 25)];
lblTotCaratteri.textAlignment = UITextAlignmentCenter;
lblTotCaratteri.font = [UIFont italicSystemFontOfSize:13.0];
lblTotCaratteri.textColor = [UIColor redColor];
lblTotCaratteri.backgroundColor = [UIColor clearColor];
lblTotCaratteri.adjustsFontSizeToFitWidth = YES;
lblTotCaratteri.text = @"Cancel";

UIBarButtonItem *lblCaratteri = [[UIBarButtonItem alloc] initWithCustomView: lblTotCaratteri];

self.navigationItem.rightBarButtonItem = lblCaratteri;
4
Jerry Thomsan

Vieille question, voici la solution Swift 2.2:

    let cancel = UIBarButtonItem(title: "CANCEL", style: .Bordered, target: self, action: #selector(goToPreviousView))
    cancel.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.redColor()], forState: .Normal)
    self.navigationItem.leftBarButtonItem = cancel
3
Rool Paap

Voici le code de version de Swift 4.0 mis à jour:

let reset = UIBarButtonItem(title: "Reset All", style: .plain , target: self, action: #selector(self.resetButtonClicked(_ :) ))
reset.setTitleTextAttributes([NSAttributedStringKey.foregroundColor: UIColor.red], for: .normal)
3
Saggy

Swift 4.2

let doneButton = UIBarButtonItem(title: "Done", style: .plain, target: self, action: nil)
doneButton.setTitleTextAttributes([.foregroundColor: UIColor.red], for: .normal)
0
Abhishek Jain

Swift 4.2

UIBarButtonItem utilisant un texte attribué:

func createCancelButton() {
        guard let font = UIFont(name: "OpenSans", size: 12) else { return }
        let cancelButton = UIBarButtonItem(title: "Logout", style: .plain, target: self, action: #selector(cancelTapped))
        cancelButton.setTitleTextAttributes([NSAttributedString.Key.foregroundColor : UIColor.blue, NSAttributedString.Key.font : font], for: .normal)
        navigationItem.leftBarButtonItem = cancelButton
    }

    @objc func cancelTapped() {
        print("cancelTapped")
    }

UIBarButtonItem en texte brut:

func createCancelButton() {
        let cancelButton = UIBarButtonItem(title: "Logout", style: .plain, target: self, action: #selector(cancelTapped))
        cancelButton.tintColor = UIColor.blue
        navigationItem.leftBarButtonItem = cancelButton
    }

    @objc func cancelTapped() {
        print("cancelTapped")
    }
0
HSAM

Si tout le monde ne fait pas votre projet et que vous avez juste besoin d’ajouter quelques modifications, la principale chose à faire

[UIBarButtonItem appearance]

J'ai perdu beaucoup de temps à réaliser que quelqu'un avait mal défini UIBarButtonItem 

0
Nosov Pavel

UITextAttributeTextColor // Est obsolète sur iOS 7. 

Définissez la couleur de BarButtonItem comme ceci

    [_barButtonItem setTitleTextAttributes:
                    [NSDictionary dictionaryWithObjectsAndKeys: 
                             [UIColor colorWithRed:250/255.0 
                                             green:240/255.0 
                                             blue:230/255.0 
                                             alpha:1.0],  
                             NSForegroundColorAttributeName,nil] 
                    forState:UIControlStateNormal];
0
Oleg Tretiakov