2014-02-11 3 views
0

У меня есть проект с двумя сегментами элементов управления. Они оба работали до iOS7.0. Теперь никто этого не делает. Я читал о проблемах с tintColor, но я думаю, что это что-то другое.UISegmentedControl in iOS 7

Оба элемента управления используют UIImages как сегменты. Во-первых, все изображения отображаются правильно. С другой стороны, я получаю все синие изображений.

Я делаю что-то неправильно или это ошибка?

Вот код неисправного сегмента:

UISegmentedControl *colorControl = [[UISegmentedControl alloc] initWithItems: 
    [NSArray arrayWithObjects: 
    [UIImage imageNamed:@"White.png"], 
    [UIImage imageNamed:@"Red.png"], 
    [UIImage imageNamed:@"Yellow.png"], 
    [UIImage imageNamed:@"Green.png"], 
    [UIImage imageNamed:@"Blue.png"], 
    [UIImage imageNamed:@"Purple.png"], 
    [UIImage imageNamed:@"Black.png"], nil]]; 



    CGRect frame = CGRectMake(rect.origin.x + kLeftMargin, rect.size.height - kPaletteHeight - kTopMargin, rect.size.width - (kLeftMargin + kRightMargin), kPaletteHeight); 
    colorControl.frame = frame; 

    // Add DoubleTap Color capability 

    gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showMoreColors:)]; 
    [gesture setNumberOfTapsRequired:2]; 

    [colorControl addGestureRecognizer:gesture]; 

    // When the user chooses a color, the method changeColor: is called. 
    [colorControl addTarget:self action:@selector(changeColor:) forControlEvents:UIControlEventValueChanged]; 

    // Make sure the color of the color complements the black background 
    //colorControl.tintColor = [UIColor clearColor]; 

    // Add the control to the window 
    [self.view addSubview:colorControl]; 

В то время как изображения все синий, сегменты работать, как ожидалось.

ответ

0

Благодаря this question, я сформулировал следующее исправление:

-(void) buildColorBar { 
    //NSLog(@"%s", __FUNCTION__); 

    UIImage *whiteImage = [UIImage imageNamed:@"White.png"]; 
    UIImage *blackImage = [UIImage imageNamed:@"Black.png"]; 
    UIImage *purpleImage = [UIImage imageNamed:@"Purple.png"]; 
    UIImage *redImage = [UIImage imageNamed:@"Red.png"]; 
    UIImage *blueImage = [UIImage imageNamed:@"Blue.png"]; 
    UIImage *greenImage = [UIImage imageNamed:@"Green.png"]; 
    UIImage *yellowImage = [UIImage imageNamed:@"Yellow.png"]; 

    NSArray *colorArray = [[NSArray alloc] initWithObjects: 
        [whiteImage imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal], 
        [redImage imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal ], 
        [yellowImage imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal ], 
        [greenImage imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal ], 
        [blueImage imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal ], 
        [purpleImage imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal ], 
        [blackImage imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal ], nil ]; 


    UISegmentedControl *colorControl = [[UISegmentedControl alloc] initWithItems:colorArray]; 

    CGRect frame = CGRectMake(rect.origin.x + kLeftMargin, rect.size.height - kPaletteHeight - kTopMargin, rect.size.width - (kLeftMargin + kRightMargin), kPaletteHeight); 
    colorControl.frame = frame; 

Я надеюсь, что это помогает кому-то еще.

Смежные вопросы