UISegmentedControl图像突出显示在iOS6中的错误

目前我有一个小分段控制3个独立的部分。

我想要做的是,如果select,将该特定片段的图像更改为不同的图像。

到目前为止,我已经设法使它与我想要的非常相似,并且在select时显示新的图像,但是新图像的一小部分被蓝色突出显示(如下所示),并且无论我尝试什么,我无法摆脱它:

出于某种原因,突出显示是压倒性的部分图像。

我想知道如何完全禁用任何突出显示/改变分段控制select时,或任何其他选项,将实现我的问题。

我到目前为止所尝试的是:

  • 设置UISegmentedControl的背景图像
  • UISegmentedControl自定义背景图像

我的代码(只是testing一个图像的任何选定的button,你可以看到):

-(IBAction)languageChanged:(UISegmentedControl *)sender { UISegmentedControl *segmentControl = [[UISegmentedControl alloc] init]; [segmentControl addTarget:self action:@selector(segmentedControlValueChanged:) forControlEvents:UIControlEventValueChanged]; [self.view addSubview:segmentControl]; [sender setImage:[UIImage imageNamed:@"rsz_langue-francais-on.png"] forSegmentAtIndex:sender.selectedSegmentIndex]; } 

我不是100%确定这是否可以工作,但是颜色由tintColor决定。

所以你可以简单地将tintColor设置为[UIColor clearColor];

编辑:

我读过这是iOS6及以上的问题。 为了解决这个问题,设置每个单独部分的宽度而不是整个分段控件。

这是宽度为180的UISegmentedControl一些示例(未经testing的)代码:

 float version = [[[UIDevice currentDevice] systemVersion] floatValue]; if (version >= 6.0) { [[UISegmentedControl appearance] setWidth:90 forSegmentAtIndex:0]; [[UISegmentedControl appearance] setWidth:90 forSegmentAtIndex:1]; } else{ segmentedControl.frame = CGRectMake(0, 0, 180, 30); } 

编辑2:

当样式设置为“栏”而不是“简单”时,我只能改变段控制色调颜色。 我真的注意到这种变化,因为我的应用程序中的颜色一致性受到了损害。

临时和肮脏的修复可能是检查瞬间状态为YES。 这将使它只有一秒钟蓝色,你的自定义图像仍然会使它看起来被选中。

最后,我能够解决的唯一方法(也许避免会是一个更好的词)问题是通过改变uisegmentedcontrol的风格从' 平原 '到' 酒吧 ',这删除了段之间的蓝色突出显示的间距,像帕特里克上面提到的 我听说这是一个已知的iOS6错误,希望它很快就会被修复。