11

目前我有一个带有 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];     
}
4

2 回答 2

4

我不是 100% 确定这是否可行,但段颜色由tintColor.

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

编辑:

我读过这是 iOS6 及更高版本的问题。要解决此问题,请为每个单独的部分设置宽度,而不是为整个分段控件设置宽度。

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

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:

当样式设置为“条形”而不是“纯色”时,我只能更改分段控件的色调颜色。当我的应用程序中颜色的一致性受到损害时,我真的很快就会改变这种情况。

临时和肮脏的修复可能是将瞬时状态检查为“是”。这将使其仅蓝色一秒钟,您的自定义图像仍将使其看起来被选中。

于 2013-02-11T10:52:52.943 回答
2

最后,我能够解决的唯一方法(也许避免会是一个更好的词)问题是将样式uisegmentedcontrol从“ Plain ”更改为“ Bar ”,这消除了段之间的蓝色突出显示间距,例如帕特里克在上面建议。我听说这是一个已知的 iOS6 错误,希望它很快得到修复。

于 2013-02-15T09:32:10.090 回答