目前我有一个带有 3 个独立段的小型分段控件。
我想做的是,如果选中,将该特定片段的图像更改为不同的图像。
到目前为止,我已经设法使它与我想要的非常相似,并且在选择时会显示一个新图像,但是新图像的一小部分被蓝色突出显示(如下所示)覆盖,无论我尝试了什么,我无法摆脱它:
由于某种原因,突出显示覆盖了图像的一部分。
我想知道如何在选中时完全禁用分段控件的任何突出显示/更改,或者可以解决我的问题的任何其他选项。
到目前为止我尝试了什么:
我的代码(如您所见,只是为任何选定的按钮测试一张图像):
-(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
的一些示例(未经测试)代码:
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:
我只能在样式设置为“Bar”而不是“Plain”时更改段控件的色调颜色。当我的应用程序中的颜色一致性受到损害时,我真的很喜欢这种变化。
临时和肮脏的修复可能是将瞬时状态检查为是。这将使它只有一秒钟的蓝色,而您的自定义图像仍会使它看起来像是被选中的。
关于ios - iOS6 中的 UISegmentedControl 图像突出显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14810493/