Его легко изменить цвет UISegmentedControl. Я нашел различные решения, такие как this, этот сайт и лучшие это решение. Но это было не то, что мне нужно.
Я попытался создать простую вещь, и она работала очень легко, это был мой код: (я использую 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
, у меня будет:
Затем снова появится синяя линия. Это означает, что каждая левая сторона на старом сегменте, по которому щелкнули мышью (но не на первом), будет иметь эту синюю линию. Если я иду справа налево, этого не происходит.
Я не знаю, как это решить. Как я могу получить доступ к этой строке и изменить свой цвет? Или мне придется использовать другие коды. Может у них будет такая же проблема ...