0

我正在尝试为 UISegmentedControl 设置 tintColor 和选定的 tintColor。

到目前为止,一切正常,除了当视图首次加载时,即使我调用我的方法来设置 tintColor(并执行),直到第一次单击之前,tintColor 实际上并没有正确设置。

然而,它确实出现了,好像正在发生一些事情,因为我试图将颜色设置为黑色并选择白色,并且默认颜色有点暗。

关于如何实际修改负载颜色的任何想法?

//some code
-(void)viewDidLoad
_segmentedControl.selectedSegmentIndex = 0;
[self segmentedControl:_segmentedControl];

//set color method
- (IBAction)segmentedControl:(BaseSegmentedControl *)sender
{
//change the color of every subview(segment) you have
 for (int i = 0; i < [[sender subviews] count]; i++ )
{
    if ([[sender.subviews objectAtIndex:i]isSelected] )
    {
        [[sender.subviews objectAtIndex:i] setTintColor:nil];
        [[sender.subviews objectAtIndex:i] setTintColor:[UIColor whiteColor]];
    }
    else
    {
        [[sender.subviews objectAtIndex:i] setTintColor:nil];
        [[sender.subviews objectAtIndex:i] setTintColor:[UIColor blackColor]];
    }
}

谢谢

4

2 回答 2

5

我想你可能已经把你的 uisegmentedcontrol 放到了导航栏上。当你这样做时, UISegmentedControl 在你的视图之前被加载,所以设置 tint color 是没有用的。我在这里找到了解决方案:

 self.segmentedControll.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;

正如文件所说:

当这个属性的值改变时(无论是视图的值改变还是它的父视图的一个值改变),系统调用 tintColorDidChange 方法来允许视图刷新它的渲染。

将此行添加到您的 viewDidLoad 方法中,这将导致分段控件重绘。

于 2013-12-24T02:14:54.720 回答
0

尝试设置它我-viewWillAppear 认为视图尚未完全设置-viewDidLoad也不要忘记 [super viewDidLoad];-viewDidLoad

于 2013-07-23T21:45:20.397 回答