目前我有一个小的分段控件,有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];
}
答案 0 :(得分:4)
我不是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”时,我只能更改段控制色调颜色。由于我的应用程序中的颜色一致性受到影响,我很快就会对此进行更改。
临时和脏的修复可以检查瞬间状态为YES。这将使其仅为蓝色一秒钟,您的自定义图像仍然会使它看起来被选中。
答案 1 :(得分:2)
最后,我能够修复的唯一方法(可能避免使用更好的词)问题是将uisegmentedcontrol
的样式从“ Plain ”更改为'栏',删除了段之间突出显示的蓝色间距,就像Patrick上面提到的那样。我听说这是一个已知的iOS6错误,希望它很快得到解决。