Iphone UIsegmentedControl设置颜色奇怪的行为
我有一个UISegmentedControl,其中包含3个用于选择贴图类型的选项。我正在将tintcolor设置为默认的黑色,并希望为选定的线段设置绿色 下面是分段控制的声明Iphone UIsegmentedControl设置颜色奇怪的行为,iphone,ios,uisegmentedcontrol,tintcolor,Iphone,Ios,Uisegmentedcontrol,Tintcolor,我有一个UISegmentedControl,其中包含3个用于选择贴图类型的选项。我正在将tintcolor设置为默认的黑色,并希望为选定的线段设置绿色 下面是分段控制的声明 NSArray *mapType = [NSArray arrayWithObjects: @"Map", @"Hyb", @"Sat", nil]; segmentedMapType = [[UISegmentedControl alloc] initWithItems:mapType] ; segmen
NSArray *mapType = [NSArray arrayWithObjects: @"Map", @"Hyb", @"Sat", nil];
segmentedMapType = [[UISegmentedControl alloc] initWithItems:mapType] ;
segmentedMapType.segmentedControlStyle = UISegmentedControlStyleBar ;
segmentedMapType.tintColor = [UIColor blackColor];
segmentedMapType.frame = CGRectMake(100, 40, 120, 40);
// segmentedMapType.momentary = YES;
[[[segmentedMapType subviews]objectAtIndex:0] setTintColor:[UIColor colorWithRed:0 green:.6 blue:0 alpha:1]];
[segmentedMapType setSelectedSegmentIndex:0];
[segmentedMapType addTarget:self action:@selector(selectMap:) forControlEvents:UIControlEventValueChanged];
[mapSettingsView addSubview:segmentedMapType];
这里是选择器方法
-(void)selectMap:(id)sender
{
int index = [segmentedMapType selectedSegmentIndex];
UIColor *newSelectedTintColor = [UIColor colorWithRed: 0 green:.6 blue:0 alpha:1.0];
if (index==0) {
[[[segmentedMapType subviews] objectAtIndex:2] setTintColor:newSelectedTintColor];
[[[segmentedMapType subviews] objectAtIndex:1] setTintColor:[UIColor blackColor]];
[[[segmentedMapType subviews] objectAtIndex:0] setTintColor:[UIColor blackColor]];
} else if (index==1){
[[[segmentedMapType subviews] objectAtIndex:1] setTintColor:newSelectedTintColor];
[[[segmentedMapType subviews] objectAtIndex:0] setTintColor:[UIColor blackColor]];
[[[segmentedMapType subviews] objectAtIndex:2] setTintColor:[UIColor blackColor]];
}
else
if (index==2)
{
[[[segmentedMapType subviews] objectAtIndex:0] setTintColor:newSelectedTintColor];
[[[segmentedMapType subviews] objectAtIndex:1] setTintColor:[UIColor blackColor]];
[[[segmentedMapType subviews] objectAtIndex:2] setTintColor:[UIColor blackColor]];
}
}
此代码在
据我所知,没有默认方法对特定的段索引着色。您只能将整个段作为一个整体提供着色 试试这个 谢谢你的提问 如前所述,所选索引不是指定颜色的可靠方法。我必须存储他们的id并使用它们指定颜色。 首先存储ID
for (int i=0; i<3; i++) {
//The most important trick to work, have to retain the subviews
segment[i] = [[[segmentedMapType subviews] objectAtIndex:i] retain];
}
(inti=0;i)的,多亏了这个问题
如前所述,所选索引不是分配tintcolor的可靠方法。我必须存储它们的id并使用它们来分配tintcolor。
首先存储ID
for (int i=0; i<3; i++) {
//The most important trick to work, have to retain the subviews
segment[i] = [[[segmentedMapType subviews] objectAtIndex:i] retain];
}
for(int i=0;i如果在viewDidLoad(或ViewDidDapPear之前的任何地方)中执行,则在触摸控件之前,不会应用单个片段(甚至可能是整个分段控件,不确定)的着色颜色的更改。出于某种原因,如果在viewDidLoad(或ViewDipPear之前的任何地方)中执行此操作更改单个分段的着色颜色(甚至可能是整个分段控件,不确定)在您触摸控件之前不会应用。非常感谢Shubhank。但是这段代码在iOS-4.x中对我起了作用,我在iOS-5设备上运行这段代码时遇到了问题。很抱歉,我忘了在问题中提到这一点。在您提到的链接中,其他开发人员正是在抱怨这一点(适用于iOS非常感谢Shubhank。但是这段代码在iOS-4.x中对我有效,我在iOS-5设备上运行这段代码时遇到了问题。很抱歉,我忘了提到这一点。在你提到的链接中,其他开发人员正是在抱怨这一点(适用于iOS)