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错误,希望它很快就会被修复。