Как мога да накарам черен UISegmentedControl да се показва с видимо подчертаване на избора?

Имам проста сегментирана контрола в лента с инструменти. Има черен нюанс. Когато един от сегментите е избран, няма визуален индикатор, който да показва това. Сега обикновено ще потъмни избрания сегмент, но не можете да потъмните черното. Когато се натисне нормален бутон на лентата с бутони, той става по-светлосив, за да покаже, че е натиснат. Как мога да направя същото за сегментирания контрол?


person Micah Hainline    schedule 02.11.2011    source източник


Отговори (2)


Можете да си поиграете с tintColor

 NSString *firstStr = @"ABC";
NSString *secondStr = @"Catégories";
NSArray *arTemp = [[NSArray alloc] initWithObjects:firstStr, secondStr, nil];
UISegmentedControl *segment = [[UISegmentedControl alloc] initWithItems:arTemp];
[arTemp release];
arTemp = nil;
segment.segmentedControlStyle = UISegmentedControlStyleBar;
segment.tintColor = [UIColor darkGrayColor];
person Vincent Bernier    schedule 02.11.2011
comment
Не е точно това, което търся. Трябва само избраният сегмент да е сив, а не всички сегменти. - person Micah Hainline; 02.11.2011
comment
Знам, че е обратното на това, което искате; избраното е черно, а неизбраното е тъмно сиво. Мина много време, откакто написах този код и след някакъв неуспешен тест просто тръгнах по този начин. - person Vincent Bernier; 02.11.2011

  1. Разгледахте ли новия прокси за външен вид на ios5? Това трябва да може да ви помогне.

  2. Ако се нуждаете и от поддръжка преди ios5, това, което видях е, че е достатъчно лесно да направите свой собствен сегментиран контрол - нещо толкова просто като набор от бутони с персонализирани фонови изображения (и които премахват избора на другите бутони, когато е избран един бутон ) или по-задълбочен подход, както е описано в тази публикация на idevrecipes.com

    Сайтът в връзката по-горе също има добра дискусия за това как да направите изображения на бутони за сегментиран контрол с отрязани капачки.

  3. Трета идея е да вземете обикновен сегментиран контрол, да зададете нюанса на сивото, малко по-светъл от черното, след това да играете със събитията на докосване (докосване отвътре, докосване отвън), за да обърнете основно нормалното поведение на сегментирания контрола, карайки черния бутон на контролата да се държи като избрания. Мисля обаче, че това би било против намеренията на Apple (въпреки че това прави новото приложение Reminders в iOS5) и не съм го пробвал, за да видя дали има някакъв фин нюанс, който би накарал това да не работи.

Бих искал да чуя как ще се справиш с това. Късмет!

person kris    schedule 02.11.2011