Using iOS14.0.1, Swift5.3, Xcode12.0.1,
I try to change the textColor
of a UIDatePicker
in iOS14 and using UIKit.
I read here that you need the following method to do so:
let myDatePicker = UIDatePicker()
myDatePicker.tintColor = .white
I also tried the following (but that makes my app crash under iOS14):
myDatePicker.setValue(UIColor.white, forKeyPath: "textColor")
I also tried (but without success either):
UILabel.appearance(whenContainedInInstancesOf: [UIDatePicker.self]).textColor = UIColor.white
In light mode, none of my trials work (as can bee seen in the screenshot-excerpt):
What do I need to do to get the white color text in my UIDatePicker
?
Try this, add the extension below:
extension UIDatePicker {
var textColor: UIColor? {
set {
setValue(newValue, forKeyPath: "textColor")
}
get {
return value(forKeyPath: "textColor") as? UIColor
}
}
}
Now in viewDidLoad call:
myDatePicker.textColor = .yourColor
call it after other picker property, es.:
myDatePicker.preferredDatePickerStyle = .wheels
myDatePicker.addTarget(self, action: #selector(handleDatePicker), for: .valueChanged)
myDatePicker.datePickerMode = .dateAndTime
myDatePicker.timeZone = NSTimeZone.local
myDatePicker.backgroundColor = .black
myDatePicker.setValue(false, forKey: "highlightsToday")
myDatePicker.textColor = .yourColor // here
if you want highlightsToday set the relative picker value to true:
myDatePicker.setValue(true, forKey: "highlightsToday")
and this is the result: