2012-10-27 28 views
8

Iam nuovo all'obiettivo c, è necessario modificare il colore del testo del segmento selezionato in UIsegmentControl. Utilizzato il seguente codice.Cambia il colore del testo di UISegmentedControl

[[UIsegmentControl.subviews objectAtIndex:segment.selectedSegmentIndex] setTintColor:[UIColor redColor]]; 

cambia segmento me color.Help per favore ..

risposta

38

Non è possibile impostare il colore personalizzato del titolo del segmento selezionato in UISegmentedControl. Lo UIControlState in forState: utilizzato per impostare gli attributi del testo del segmento per lo stato normale e selezionato.

dal codice:

[[UIsegmentControl.subviews objectAtIndex:segment.selectedSegmentIndex] setTintColor:[UIColor redColor]]; 

provare questo codice:

[segmnt_cntrl setTitleTextAttributes:@{NSFontAttributeName:[UIFont fontWithName:@"Arial" size:16.0], 
                  NSForegroundColorAttributeName:[UIColor redColor], 
                  NSShadowAttributeName:shadow} 
                 forState:UIControlStateNormal]; 

Sostituire la segmnt_cntrl con il tuo oggetto del segmento Cotrol. Prova questo, potrebbe aiutarti a raggiungere il tuo obiettivo.

Grazie

+3

Questa risposta è corretta tranne che per il tuo primo paragrafo. 'UIControlState' in' forState: 'può essere usato per impostare gli attributi per il testo del segmento normale e selezionato. – jrturton

+0

Grazie, sei corretto @jrturton. È fatto per errore. –

+0

Dovresti modificare la risposta per renderla corretta. – jrturton

2

Non v'è alcuna API standard per impostare gli attributi di testo di un singolo segmento in un UISegmentedControl. È possibile eseguire l'approccio non consigliato di scavare nella gerarchia di visualizzazione del controllo segmentato, trovare l'UILabel desiderato (se presente) e impostare gli attributi di tale etichetta. Un approccio migliore consiste nel trovare (o scrivere) un controllo personalizzato che emuli un UISegmentedControl e consente di personalizzare un singolo segmento nel modo in cui è necessario.

Edit:

In realtà, stavo guardando questo dal punto di vista sbagliato. La mia risposta era basata sul tentativo di impostare attributi per un indice di segmento specifico. Ma in realtà ciò può essere ottenuto impostando gli attributi di testo per lo stato UIControlStateSelected. Dispiace per la confusione.

+0

È possibile impostare gli attributi di testo utilizzando i metodi di comparazione UIA, per uno stato di controllo specifico. Quindi questa risposta è sbagliata. – jrturton

+0

@jrturton Naturalmente. Errore mio. Stavo pensando a questo dal punto di vista dell'indice di segmento. Ma in questo caso può essere fatto per lo stato evidenziato. Aggiornerò la mia risposta Grazie – rmaddy

18

Se avete bisogno di cambiare il colore del testo del segmento evidenziato in iOS 7, ecco una soluzione (mi ha portato un po 'per trovare, ma thanks to this post):

[[UISegmentedControl appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor colorBlack]} forState:UIControlStateSelected]; 
+0

per favore, dimmi cosa devo fare se voglio cambiare il colore del testo evidenziato e il segmento normale in nero. In questo momento è di colore blu –

+0

@NehaDangui, sarebbe una questione di sostituire 'UIControlStateSelected' con' UIControlStateNormal' (o 'UIControlStateHighlighted' se necessario). –

2

Con riferimenti a @ I-- risposta

per SWIFT:

UISegmentedControl.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.red], for: .selected) 
0

Aggiornato risposta di @Babul Prabhakar per Swift 3, perché circa una mezza dozzina di piccole cose sono cambiate:

UISegmentedControl.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.red as Any], for: .selected) 
0

È possibile utilizzare HMSegmentedControl per tutti i trucchi tipo e tratta.

Cambiare il carattere utilizzando HMsegmentedController è troppo facile. In funzione per l'impostazione di HMSegmentedController, aggiungere un dizionario che descrive gli attributi e passarlo alla proprietà SelectedTitleTextAttributes, il codice di esempio è riportato sotto.

-(void)setHMSegmentController { 
    [self.segmentView setSectionTitles:@[@"COURSES", @"ASSESSMENTS"]]; 
    NSDictionary *highlightedAttributes = [NSDictionary dictionaryWithObject:[UIColor blackColor] forKey:NSForegroundColorAttributeName]; 

    self.segmentView.selectedTitleTextAttributes = highlightedAttributes; 
    [self.segmentView addTarget:self action:@selector(segmentedControlChangedValue:) forControlEvents:UIControlEventValueChanged]; 
} 

L'utilizzo di questa scheda selezionata verrà evidenziata utilizzando il colore nero.

Problemi correlati