2014-05-07 29 views
9

Sto provando a creare un UIButton a livello di codice. Tuttavia, per impostazione predefinita è bianco (che è il colore predefinito per la mia barra di navigazione, ritengo che sia rilevante). Voglio che sia il colore blu predefinito di Apple in iOS7. Sono riuscito a cambiare il colore per il suo stato di default, ma nel momento in cui lo seleziono il testo diventa di nuovo bianco. Non riesco a capire come mantenerlo blu.Modifica del colore del carattere UIButton a seconda dello stato

Qualcuno potrebbe spiegarmi come creare un UIButton in modo programmatico e farlo agire come se lo avessi creato nello storyboard?

codice attuale:

UIButton *cancelButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
cancelButton.frame = CGRectMake(320 - 150, 0, 140, 40); 
[cancelButton setTitle:@"Cancel" forState:UIControlStateNormal]; 
cancelButton.titleLabel.tintColor = [UIColor colorWithRed:0.0 green:122.0/255.0 blue:1.0 alpha:1.0]; 
cancelButton.titleLabel.textColor = [UIColor colorWithRed:0.0 green:122.0/255.0 blue:1.0 alpha:1.0]; 

Grazie.

+0

L'impostazione del titoloLabel non ha mai funzionato per me. @SunnyShah è la strada da percorrere. – Milo

risposta

28

provare questo codice:

UIButton *cancelButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[cancelButton setFrame:CGRectMake(320 - 150, 0, 140, 40)]; 
[cancelButton setBackgroundColor:[UIColor clearColor]]; 
[cancelButton setTitleColor:[UIColor blueColor] forState:UIControlStateNormal]; 
[cancelButton setTitleColor:[UIColor blueColor] forState:UIControlStateHighlighted]; // This will helps you during click time title color will be blue color 
[cancelButton setTitle:@"Cancel" forState:UIControlStateNormal]; 
[cancelButton addTarget:self action:@selector(button_Action) forControlEvents:UIControlEventTouchUpInside]; 
[self.view addSubview:cancelButton]; 
+0

Anche se non sei stato il primo a rispondere, questo è il più dettagliato. Grazie. – Ian

+0

Grazie mille alots :) –

0

Provare a utilizzare

- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state

per specificare i colori per tutti gli stati richiesti.

+0

Capisco. Ha funzionato. Pensavo che titleLabel avrebbe incluso tutti, chiaramente mi sbagliavo. Grazie. – Ian

+1

Prego. Il motivo per cui 'titleLabel' non funziona per questo è che in realtà fa riferimento solo alla proprietà corrente del titolo di' UIButton' (non titoli per tutti gli stati), come specifica la documentazione: https://developer.apple.com/ biblioteca/ios/documentazione/UIKit/riferimento/UIButton_Class/UIButton/UIButton.html # // apple_ref/OCC/instp/UIButton/titleLabel. –

1

Hai provato questo

[cancelButton setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; 
[cancelButton setTitleColor:[UIColor blueColor] forState:UIControlStateSelected]; 
3

Appena provato con

[cancelButton setTitleColor:[UIColor colorWithRed:0.0 green:122.0/255.0 blue:1.0/255.0 alpha:1.0] forState:UIControlStateNormal]; 

Per ulteriori informazioni leggere official documentation of UIButton.

+0

Il blu dovrebbe essere -> blu: 1.0f e non blu: 1.0/255.o – Kevin

1

Questo risolverà il vostro problema,

[cancelButton setTitleColor:YOUR COLOR forState:SPECIFIED STATE]; 

T egli valori di stato sono:

UIControlStateNormal 
UIControlStateHighlighted     
UIControlStateDisabled  
UIControlStateSelected 
0

Swift:

let button = UIButton (type: UIButtonType.system) 

Questo creerà un pulsante che utilizza il colore standard di tinta, proprio come un pulsante aggiunto a un storyboard nel generatore di interfacce.

Problemi correlati