2012-09-06 18 views
21

aggiungo un pulsante della barra alla barra di navigazione programitically come segueCome cambiare il colore colore del carattere/Testo della UIBarButtonItem sulla barra di navigazione

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

Ora voglio visualizzare testo "ANNULLA" in colore rosso.

Voglio dire che ho bisogno di cambiare il testo sugli elementi del pulsante della barra, ma non il colore della tinta del pulsante.

Come fare?

+0

Guarda anche questi collegamenti http://stackoverflow.com/questions/3314035/how-can-i-change -the-font-color-of-a-uibarbutton-item e http://stackoverflow.com/questions/664930/uibarbuttonitem-with-color – IronManGill

+0

Per iOS 5+, vedere questa risposta: http: // stackoverflow.com/questions/7810563/how-do-you-use-settitletextattributesforstate-in-uibaritem-in-ios-5-0 –

risposta

7

Un altro metodo è il seguente: -

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]; 
97

Check this out: -

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

essa provoca il crash: filettatura 1: EXC_BAD_ACESS (codice = 2 indirizzo = 0x0) – user1645721

+1

+1 funziona perfettamente grazie. @ User1645721 setTitleTextAttributes funzione disponibile da IOS 5 –

+1

Questo è molto più facile da implementare rispetto alla soluzione accettata e funziona ... – c0d3Junk13

4

questo codice viene utilizzato per il cambiamento del colore del testo della UIBarButtonItem sulla barra di navigazione:

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; 
10
UITextAttributeTextColor //Is deprecated on iOS 7. 

Questo codice è noi ed per cambiare il colore del testo dal proxy dell'aspetto.

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

Questo imposta il colore di sfondo, ha chiesto il colore del testo. – Lukasz

+0

Usa NSForegroundColorAttributeName invece di UITextAttributeTextColor – eXhausted

0

UITextAttributeTextColor // è deprecato su iOS 7.

Impostare il colore di BarButtonItem in un modo come questo

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

solo un aggiornamento iOS7 con moderna Obj-C Sintassi:

[barButtonItem setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor redColor]} forState:UIControlStateNormal]; 
2

Vecchia domanda, ecco la soluzione rapida 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 
0

La cosa principale che tutti dovrebbero farlo se non è il vostro progetto e basta aggiungere alcune modifiche - è controllare

[UIBarButtonItem appearance] 

ho sprecato un sacco di tempo per rendersi conto che qualcuno impostare l'aspetto sbagliato di UIBarButtonItem

0

qui rappresentati codice sWIFT versione 4.0:

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