#swift #uisegmentedcontrol
#swift #uisegmentedcontrol
Вопрос:
Я буду рад помощи.
Я знаю, как изменить текст для выбранного состояния с помощью AttributedString, но я не могу найти способ установить уникальный цвет текста (или даже цвет фона) для каждого сегмента.
Есть идеи, как это сделать?
Комментарии:
1. Для выбранного состояния я хочу, чтобы для каждого сегмента был другой цвет, если он не выбран.
Ответ №1:
Чтобы создать уникальный цвет фона для выбранного сегмента, вам необходимо создать действие для UISegmentControl
, а затем на основе индекса установить цвет.
@IBAction func segmentChanged(_ sender: UISegmentedControl) {
if sender.selectedSegmentIndex == 0 {
sender.selectedSegmentTintColor = UIColor.red
} else {
sender.selectedSegmentTintColor = UIColor.blue
}
}
Редактировать:
Таким образом, вы можете попробовать работать с UISegmentControl
подобными подвидами:
@IBOutlet weak var segment: UISegmentedControl! {
didSet {
for (index, view) in segment.subviews.enumerated() {
if index == 0 {
view.subviews.forEach{ label in
(label as! UILabel).textColor = UIColor.red
}
} else {
view.subviews.forEach{ label in
(label as! UILabel).textColor = UIColor.blue
}
}
}
}
}
Комментарии:
1. Спасибо, но я ищу состояние по умолчанию (когда оно не выбрано, в моем ‘viewDidLoad’). Либо цвет фона / текста.
2. @IdanMoshe Я обновил свой ответ. Я протестировал этот код, и он работает.