uisegmentedcontrol的边框颜色

时间:2013-11-24 19:41:03

标签: ios7 uisegmentedcontrol

我无法在iOS7中更改分段控件的边框颜色。我在stackoverflow的其他地方找到了以下建议:

    [[UISegmentedControl appearance] setTitleTextAttributes:@{
                                                             UITextAttributeTextColor: [UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1.0],
                                                             UITextAttributeTextShadowColor: [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0],
                                                             UITextAttributeFont: [UIFont fontWithName:@"Arial-Bold" size:0.0],
                                                             NSForegroundColorAttributeName : [UIColor redColor],

                                                             } forState:UIControlStateSelected];

    [self.segmentedControl setTitleTextAttributes:@{
                                                    UITextAttributeTextColor: [UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1.0],
                                                    UITextAttributeTextShadowColor: [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0],
                                                    UITextAttributeFont: [UIFont fontWithName:@"Arial-Bold" size:0.0],
                                                    NSForegroundColorAttributeName : [UIColor redColor],

                                                    } forState:UIControlStateNormal];

但在这两种情况下,我的边框仍然是蓝色。我似乎无法通过settitleTextAttributes更改字体阴影,边框颜色或其他任何内容。

如何调整边框颜色?

2 个答案:

答案 0 :(得分:2)

[segmentControlObj setTintColor:[UIColor redColor]];

答案 1 :(得分:1)

好吧,我对此过度挣扎。所以我做了一个工作。我最终只是创建了一个新的UILabel并将其作为子视图添加到分段控制器中的每个项目。

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
    NSArray * segments = @[@"Crop",@"Nutrient",@"Product Group"];

    [self.segmentedControl setBackgroundImage:[UIImage imageNamed:@"background-yellowgradient.png"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

    [self.segmentedControl setSegmentedControlStyle:UISegmentedControlStyleBar];
    for (int i=0; i<[self.segmentedControl.subviews count]; i++)
    {

        [[self.segmentedControl.subviews objectAtIndex:i] setTintColor:[UIColor clearColor]];
        UILabel *l = [[UILabel alloc] init];
        l.text = [segments objectAtIndex:i];
        l.textColor = [UIColor whiteColor];
        l.textAlignment = NSTextAlignmentCenter;
        l.adjustsFontSizeToFitWidth = NO;
        l.font = [UIFont systemFontOfSize:12];


        CGRect  f = [[self.segmentedControl.subviews objectAtIndex:0] frame];
        f.size.width = self.segmentedControl.frame.size.width/3;
        f.size.height = self.segmentedControl.frame.size.height;
        f.origin.x = 0;
        f.origin.y = 0;

        l.frame = f;

        [[[self.segmentedControl subviews] objectAtIndex:i] addSubview:l];

    }
}
else{
    // if it's not IOS7, then do what i was doing before for ios6.1 and below
}