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)
}
}}