È facile modificare il colore di UISegmentedControl. Ho trovato varie soluzioni come this, this site e il migliore this solution. Ma nessuno era quello che volevo.UISegmentedControl con colore personalizzato: bug della linea di separazione
ho cercato di creare una cosa semplice e funziona molto semplice, questo è stato il mio codice: (sto usando l'iOS 4.2, non il Xcode 5.0 e 4.0.2)
id segment[3];
UISegmentedControl *segmentedControl;
- (id)init
{
NSArray *itens = [NSArray arrayWithObjects: @"Option 1", @"Option 2", @"Option 3", nil];
segmentedControl = [[UISegmentedControl alloc] initWithItems:itens];
[segmentedControl setFrame:CGRectMake(0, 0, 500, 30)];
[segmentedControl setSegmentedControlStyle:UISegmentedControlStyleBar];
[segmentedControl addTarget:self
action:@selector(segmentedControl:)
forControlEvents:UIControlEventAllEvents];
switch (type) {
case type1: [segmentedControl setSelectedSegmentIndex:0]; break;
case type2: [segmentedControl setSelectedSegmentIndex:1]; break;
case type3: [segmentedControl setSelectedSegmentIndex:2]; break;
}
for (int i=0; i<3; i++) {
//The most important trick to work, have to retain the subviews
segment[i] = [[[segmentedControl subviews] objectAtIndex:i] retain];
}
[self changeColor];
[self addSubview:segmentedControl];
return self;
}
- (void)segmentedControl:(id)sender
{
//do some thing
[self changeColor];
}
- (void)changeColor{
for (int i=0; i<3; i++) {
[segment[i] setTintColor:[UIColor lightGrayColor]];
}
int select = segmentedControl.selectedSegmentIndex;
[segment[select] setTintColor:[UIColor blueColor]];
}
Quindi creare questo:
Molto buono, poi clicco in Option 2
Wow, questo è exacly quello che voglio, quindi fare clic nella Option 3
Ora il problema, questa linea blu stupido (segnato in quadrato rosso) tra il Option 1
e Option 2
. Se clicco in Option 1
ancora una volta, avrò:
rispetto alla linea blu appaiono di nuovo. Ciò significa che ogni lato sinistro del vecchio segmento cliccato (ma non del primo) avrà questa linea blu. Se vado da destra a sinistra non succede.
Non ho idea di come risolvere questo. Come posso accedere a questa linea e cambiare il colore? O dovrò usare altri codici. Forse avranno lo stesso problema ...
Ho avuto lo stesso problema come voi e trascorrere giorni di tempo per trovare il problema. Grazie mille amico mi hai salvato la vita .. !!!! – chatur