UISegmentedControl选中的色调不显示

12

当我将整个导航栏设置为黑色(self.navigationController.navigationBar.tintColor = [UIColor blackColor];)时,通常显示在选中按钮上的颜色未显示在 UISegmentedControl 上。

这是一个 bug 还是我遗漏了什么?

6个回答

59

为了显示色彩渲染,有一些要求:

segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;

tintColor是必须要设置的。

您提到您已将tintColor设置为[UIColor blackColor]。不幸的是,UISegmentedControl始终会使用较暗的颜色来显示所选的段,而不是较亮的颜色。尝试将tintColor设置为[UIColor darkGrayColor],您应该能够看到选定的段变色。


2
尝试使用色调颜色 [UIColor colorWithWhite:80.0/255.0 alpha:1.0]。这会使黑色变得不那么黑,允许在选择后更暗地显示所选段。您可以根据需要设置白色组件。
示例代码:
UISegmentedControl *aSegmentedControl = [[UISegmentedControl alloc] initWithItems:arrItems];
aSegmentedControl.frame = CGRectMake(55, 382, 210, 32);
aSegmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
aSegmentedControl.selectedSegmentIndex = 0;
aSegmentedControl.tintColor = [UIColor colorWithWhite:80.0/255.0 alpha:1.0];

2
你尝试过分别设置分段控件的色调吗?
segmentedControl.tintColor = self.navigationController.navigationBar.tintColor;

2
在iPhone 3.0上,如果您想在一个导航控制器中添加分段控件,请先执行此操作,并在完成后更改tintcolor。

这很有帮助,但在我的情况下,我在viewDidLoad中将分段控制设置到navitem中,然后立即设置了tintColor。我发现我必须将tintColor设置移到viewWillAppear中,然后它终于起作用了。 - Jason

2

如果您在导航栏上看到不同的色调颜色,您可能还想在您的uisegmentedcontrol上使用临时属性。

segmentedControl.momentary=YES;

这会清除控件上的高亮色调。


1

在属性检查器中将分段控件样式更改为条形或斜角。就这些。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接