В iOS класс UISegmentedControl является популярным элементом управления. Он позволяет представлять данные в виде организованных таблиц. При выборе какого-либо сегмента цвет текста у него изменяется согласно настройкам фона элемента, и в этом случае текст может теряться на этом фоне, и его бывает трудно прочитать. В этой статье рассказывается о том, как обойти эту проблему путём внесения поправок в UISegmentedControl для изменения цвета текста при выборе сегмента.
Свойства Color у UISegmentedControl
У UISegmentedControl есть определённые прямые свойства Color, и я перечислю наиболее важные из них.
В первую очередь стоит упомянуть Tint Color, который используется в качестве следующего:
- Как цвет подсветки либо фона выбранного сегмента
- Как цвет текста заголовков невыбранных сегментов
- Общий цвет фрейма элемента управления
Следующий у нас Background Color, и вот для чего он используется:
- В качестве цвета фона невыбранных сегментов
- Как цвет текста названий выбранных сегментов
Оба, и Tint Color и Background Color, являются доступными в качестве прямых свойств самого UISegmentedControl, и поэтому их довольно легко установить. Вы можете столкнуться с такой проблемой, когда текст теряется на фоне или его становится трудно читать на выбранном сегменте. В этом случае Вы можете не менять фоновый цвет полностью, а только изменить цвет текста на выбранном сегменте, чтобы сделать его более удобным для чтения. Я покажу вам, как это можно сделать.
Установка Text Color в UISegmentedControl для выбранного сегмента
Установить Text color для выбранного (выделенного) сегмента на самом деле очень просто. Мы достигаем этого с помощью UITextAttributes и путём присвоения им атрибутов Title Text Attributes элементов контроля для придания им соответствующего состояния, в нашем случае, состояния выбора.
Следующий код предполагает, что у вас уже есть UISegmentedControl и что его сегменты определены:
1 2 3 4 5 6 7 8 9 10 11 12 13 | var backgroundColor = UIColor.Clear; var accentColor = UIColor.Green; var textColor = UIColor.Blue; this.segmentedControl.BackgroundColor = backgroundColor; this.segmentedControl.TintColor = accentColor; //create a UITextAttributes instance to define a text color for the selected segment var uita = new UITextAttributes(); uita.TextColor = textColor; //set the new text color attributes on the selected segment's title this.segmentedControl.SetTitleTextAttributes(uita, UIControlState.Selected); |
Он будет отображать зелёные элементы управления с чистым фоном. При клике на табличку цвет текста выбранного сегмента изменяется на синий (в начале он бесцветный) и текст становится гораздо легче читать.
Автор: Carey Payette
Источник: Блог автора
Написать ответ