很容易改变UISegmentedControl的颜色。我找到了各种解决方案,例如这个、这个网站和最好的这个解决方案。但是都不是我想要的。
我尝试创建一个简单的东西,它很容易实现,这是我的代码:(我使用的是iOS 4.2,而不是5.0和xcode 4.0.2)
我尝试创建一个简单的东西,它很容易实现,这是我的代码:(我使用的是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]];
}
于是它创建了这个:
非常好,然后我点击了选项2
哇,这正是我想要的,所以我点击了选项3
现在出现了问题,这条愚蠢的蓝线(用红色方框标记)在选项1
和选项2
之间。如果我再次点击选项1
,我将得到:
然后蓝线又出现了。这意味着旧点击段的每个左侧(但不是第一个)都会有这条蓝线。如果我从右往左走,就不会出现这种情况。
我不知道该如何解决这个问题。我怎样才能访问这条线并更改它的颜色?或者我必须使用其他代码。也许他们会有同样的问题...