При установке цвета оттенка UISegmentedControl с использованием API внешнего вида цвет текста в каждом невыбранном сегменте принимает цвет UILabel вместо этого только после переключения вкладок.
Пример программы для проверки (скриншоты ниже):
- Загрузите программу и посмотрите первую вкладку. Все нормально, метки красные, а сегменты синие.
- Переключитесь на вторую вкладку, все по-прежнему хорошо.
- Вернитесь к первой вкладке, вы увидите, что сегменты изменились на красные, а не на синие, как должны.
Приложение только что загрузилось, все в порядке:
После переключения вкладок цвет неправильный:
Ответственный код (в делегате приложения для тестирования, но происходит в другом месте):
[[UILabel appearance] setTextColor:[UIColor redColor]];
[[UISegmentedControl appearance] setTintColor:[UIColor blueColor]];
Я отправил эту информацию в Apple в отчете об ошибке. Они попросили образец проекта, но я еще не получил ответа. Это отображается только в IOS 7.1. На 7.0 этого не происходит.
Есть ли какие-либо предложения или временные исправления, которые могли бы решить эту проблему? Из-за этого мое приложение выглядит плохо, хотя я не думаю, что это моя вина (красный цвет - просто для тестирования, из-за этого любое приложение может выглядеть плохо). Я пробовал настраивать элементы управления вручную, задав оттенок конкретного элемента управления вместо использования API внешнего вида, но проблема все еще существует.
UISearchBar
, заключался в том, чтобы динамически подклассифицировать его внутреннюю иерархию подпредставлений (для ввода sweetspot:didAddSubview:
). Чертовски хакерский, но да ... - person Leo Natan   schedule 01.04.2014[self.segmentControl recursiveDescription]
в отладчике и опубликуйте результат. Попробуйте[[UILabel appearanceWhenContainedIn:[UISegmentedControl class], nil setTextColor:[UIColor blueColor]];
- person Leo Natan   schedule 01.04.2014