2011-10-18 10 views
8

Sto creando un'applicazione iPhone in cui ho un pulsante personalizzato. ho impostato il titolo dei pulsanti creando un'etichetta e aggiungendola come sottoview. ora quando il pulsante è evidenziato voglio cambiare il colore del testo delle etichette.Come impostare il colore del testo dell'etichetta dei pulsanti per stato UIControlStateHighlighted

qui è il mio codice,

UIButton *button1= [UIButton buttonWithType:UIButtonTypeCustom]; 
    [button1 setFrame:CGRectMake(68,162, 635, 101)];  
    [button1 setImage:[UIImage imageNamed:@"startwithouttext.png"] forState:UIControlStateNormal]; 
    [button1 setImage:[UIImage imageNamed:@"startactivewithouttext.png"] forState:UIControlStateHighlighted]; 

    UILabel *buttonLabel = [[UILabel alloc] initWithFrame:CGRectMake(button1.bounds.origin.x+50, button1.bounds.origin.y+20, button1.bounds.size.width-100, button1.bounds.size.height-40)]; 

    [buttonLabel setFont:[UIFont fontWithName:@"Helvetica" size:28]]; 
    buttonLabel.backgroundColor=[UIColor clearColor]; 
    buttonLabel.textColor=[UIColor colorWithRed:83.0/255.0 green:83.0/255.0 blue:83.0/255.0 alpha:1.0]; 
    buttonLabel.highlightedTextColor=[UIColor whiteColor]; 
    buttonLabel.text = @"Long text string"; 
    [button1 addSubview:buttonLabel]; 
    [button1 bringSubviewToFront:buttonLabel]; 
    [button1 setContentVerticalAlignment:UIControlContentVerticalAlignmentCenter]; 
    [button1 setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter]; 
    [button1 addTarget:self action:@selector(button1clicked:) forControlEvents: 

[mainView button1]; 

qualsiasi organismo può aiutarmi a cambiare il colore del testo quando il pulsante è evidenziato?

+0

è button1clicked chiama? – Maulik

+0

si button1clicked si chiama – krishan

+0

posso cambiare il colore del testo quando viene chiamato il metodo button1clicked, ma quello che voglio è cambiare il colore del testo quando il pulsante è alto – krishan

risposta

10

è possibile aggiungere obiettivo per UIControlStateHighlighted stato di UIButton come

[button1 addTarget:self action:@selector(buttonHighlighted:) forControlEvents:UIControlStateHighlighted]; 

e in buttonHighlighted metodo è possibile modificare il colore del testo di vostra etichetta

- (void) buttonHighlighted:(id)sender 
{ 
    //code here 
} 

Spero che vi dà un'idea.

+0

ya, è bello .. grazie per il vostro aiuto – krishan

+0

Grazie per il vostro aiuto. – krishan

+0

perché non usi l'etichetta di testo di UIButton? perché stai aggiungendo un'altra etichetta sul pulsante? – Maulik

23

trovato la risposta in una domanda diversa su StackOverflow: UIButton color issues

[button1 setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted]; 

Questo è se si può lavorare senza creare un'etichetta e aggiungendolo come visualizzazione secondaria come si parla sopra.

+0

Ciò funzionerà solo se si impostano entrambi i colori in stato diverso, oppure il colore del testo di ogni stato diventerà rosso. – Raptor

1

Per selectedColor

[yourButton setTitleColor:[UIColor purpleColor] forState:UIControlStateSelected]; 

Per HighlightedColor

[yourButton setTitleColor:[UIColor orangeColor] forState:UIControlStateHighlighted]; 
Problemi correlati