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];
}
Ответы
Ответ 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, и, надеюсь, она будет исправлена в ближайшее время.