Попытка установить разный цвет текста для каждого сегмента в UISegmentedControl

#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 Я обновил свой ответ. Я протестировал этот код, и он работает.