Swift3, как установить цвет текста по умолчанию для UISegmentedControl?

Я хочу установить цвета для текста и фона UISegmentedControl. Таким образом, я должен установить четыре цвета, по умолчанию и выбранный цвет текста и фона.

я могу использовать tintColor а также backgroundColor установить фон. Но как установить цвет текста по умолчанию, а не оттенок?

Примечание: здесь swift3 не старый язык. Я новичок в ios, я только начинаю со swift3, не имею опыта работы с предыдущим языком.

Любая помощь будет оценена.

6 ответов

Решение
UISegmentedControl.appearance().setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.redColor()], forState: .Selected)

Swift 4 код, чтобы обновить цвет текста для вашего UISegmentedControl (sc в примере ниже):

// selected option color
sc.setTitleTextAttributes([NSAttributedStringKey.foregroundColor: UIColor.green], for: .selected)

// color of other options
sc.setTitleTextAttributes([NSAttributedStringKey.foregroundColor: UIColor.white], for: .normal)

Swift 4.2 +

segmentedControl.tintColor = .black //background
segmentedControl.setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.white], for: .selected)
segmentedControl.setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.red], for: .normal)

Вот работающий:

    //default background color
    customSC.backgroundColor = UIColor(red:65/255.0, green:140/255.0, blue:218/255.0, alpha: 1.0)

    //selected background color
    customSC.tintColor = UIColor(red:65/255.0, green:140/255.0, blue:218/255.0, alpha: 1.0)

    //selected title text color
    customSC.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.white], for: UIControlState.selected)

    //default title text color
    customSC.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.darkGray], for: UIControlState.normal)
customSC.backgroundColor= UIColor(red: 0.5, greep: 0.5, blue: 0.5, alpha: 1.0)
customSC.tintColor= UIColor(red: 0.5, greep: 0.5, blue: 0.5, alpha: 1.0)

Вот быстрый способ справиться с этим на раскадровке:

      extension UISegmentedControl {
@IBInspectable var textSelectedColor: UIColor {
    get {
        return self.textSelectedColor
    }
    set {
        self.setTitleTextAttributes([NSAttributedString.Key.foregroundColor: newValue], for: .selected)
    }
}

@IBInspectable var textNormalColor: UIColor {
    get {
        return self.textNormalColor
    }
    set {
        self.setTitleTextAttributes([NSAttributedString.Key.foregroundColor: newValue], for: .normal)
    }
}}
Другие вопросы по тегам