UISegmentedControl选中的分段颜色

73

有没有办法自定义UISegmentedControl中选定段的颜色?

我发现了segmentedController.tintColor属性,它允许我自定义整个分段控件的颜色。 问题在于,当我为tintColor属性选择明亮的颜色时,选定的段几乎无法被识别(它的颜色与其余分段控件的颜色几乎相同,因此很难区分选定和未选定的段)。 所以我不能使用任何好看的明亮颜色作为分段控制的颜色。 解决方案是一些单独的选定段颜色的属性,但我找不到这个属性。有人解决了这个问题吗?


理论上,此组件旨在防止此类情况发生。如果您选择背景颜色和色调颜色,则会为所选和未选中的内容交替显示。例如,如果您选择黑色背景和白色色调,则在选择其中一个时,它将以白色背景和黑色色调放置,反之亦然。 - jose920405
https://dev59.com/1lwZ5IYBdhLWcg3wROeN#55374590 - Lal Krishna
23个回答

0
- (IBAction)segmentControlValueChanged:(UISegmentedControl *)sender
{
    if ([[sender.subviews firstObject] respondsToSelector:@selector(setTintColor:)]) {
        for (id segment in sender.subviews) {
            if ([segment respondsToSelector:@selector(isSelected)] && [segment isSelected]) {
                [segment setTintColor:[UIColor redColor]];
            } else {
                [segment setTintColor:[UIColor grayColor]];
            }
        }
    }
}

0
[segmentedControl setSelectedSegmentTintColor:[UIColor darkGrayColor]];

//For iOS 13

2
请不要仅以代码形式回答问题,还需要解释您的代码是如何工作的以及如何解决问题。带有解释的答案通常具有更高的质量,并且更容易获得赞同。 - Mark Rotteveel

-1

这段 Swift 4 代码对我有效

segmentedControl.setTitleTextAttributes([NSAttributedStringKey.foregroundColor: UIColor.red], for: .selected)

很确定这会改变文本的字体颜色,而不是所选项目的背景颜色。 - Travis M.

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