Его легко изменить цвет UISegmentedControl.Я нашел различные решения, такие как это , этот сайт и лучшее это решение .Но не то, что я хочу.
Я пытался создать простую вещь, и она работала очень легко, это был мой код: (Я использую iOS 4.2, а не 5.0 и xcode 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]];
}
Итак, создайте это:
Очень хорошо, тогда я нажимаю Option 2
Вау, это именно то, что я хочу, поэтому нажмите Option 3
Теперь проблема, эта тупая синяя линия (отмечена красным квадратом) между Option 1
иOption 2
.Если я снова нажму Option 1
, у меня будет:
Чем снова появится синяя линия.Это означает, что каждая левая сторона старого сегмента, на который нажали (но не первого), будет иметь эту синюю линию.Если я иду справа налево, этого не происходит.
Я понятия не имею, как это решить.Как я могу получить доступ к этой строке и изменить свой цвет?Или мне придется использовать другие коды.Может быть, у них будет такая же проблема ...