Подтвердить что ты не робот

UISegmentedControl изображение, выделяющее ошибку в iOS6

В настоящее время у меня есть небольшой сегментированный элемент управления с тремя отдельными сегментами.

Что я хочу сделать, если выбрано, измените образ этого конкретного сегмента на другое изображение.

До сих пор мне удалось сделать его очень похожим на то, что я хочу, и при отображении отображается новое изображение, но небольшая часть нового изображения покрывается синим цветом (показано ниже), и не важно что я пытаюсь, я не могу избавиться от него:

По какой-то причине подсветка является неотъемлемой частью изображения.

Я хотел бы знать, как полностью отключить выделение/изменение сегментированного элемента управления при его выборе или любой другой вариант, который мог бы решить мой вопрос.

Что я пробовал до сих пор:

Мой код (просто проверяйте одно изображение для любой выбранной кнопки, как вы можете видеть):

-(IBAction)languageChanged:(UISegmentedControl *)sender {
    UISegmentedControl *segmentControl = [[UISegmentedControl alloc] init];
    [segmentControl addTarget:self action:@selector(segmentedControlValueChanged:) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:segmentControl];

    [sender setImage:[UIImage imageNamed:@"rsz_langue-francais-on.png"] forSegmentAtIndex:sender.selectedSegmentIndex];     
}
4b9b3361

Ответ 1

Я не уверен на 100%, если это будет работать, но цвет сегмента определяется tintColor.

Итак, вы можете просто установить tintColor на [UIColor clearColor];

EDIT:

Я прочитал, что это проблема с iOS6 и выше. Чтобы устранить проблему, установите ширину для каждого отдельного раздела, а не всего сегментарного элемента управления.

Вот пример (непроверенный) код для UISegmentedControl с шириной 180:

float version = [[[UIDevice currentDevice] systemVersion] floatValue];
if (version >= 6.0) {
    [[UISegmentedControl appearance] setWidth:90 forSegmentAtIndex:0];
    [[UISegmentedControl appearance] setWidth:90 forSegmentAtIndex:1];
}
else{
    segmentedControl.frame = CGRectMake(0, 0, 180, 30);
}

ИЗМЕНИТЬ 2:

Мне только когда-либо удалось изменить цвет оттенка управления сегментом, когда стиль установлен на "Бар", а не на "Обычный". Я действительно скоро это сделаю, поскольку согласованность цвета в моих приложениях скомпрометирована.

Временное и грязное исправление может состоять в том, чтобы проверить мгновенное состояние на YES. Это сделало бы его только синим в течение секунды, и ваши пользовательские изображения все равно сделают его выбранным.

Ответ 2

В конце концов, единственный способ, которым я смог исправить (возможно, было бы лучше, было бы лучше), проблема заключалась в изменении стиля uisegmentedcontrol от Plain 'до' Bar ", который удалил синий выделенный интервал между сегментами, как предложил Патрик выше. Я слышал, что это известная ошибка iOS6, и, надеюсь, она будет исправлена ​​в ближайшее время.