问题描述
使用iOS14.0.1,Swift5.3,Xcode12.0.1,
我尝试在iOS14中使用UIKit更改UIDatePicker的TextColor。
let myDatePicker = UIDatePicker()
myDatePicker.tintColor = .white
我还尝试了以下操作(但是这会使我的应用在iOS14下崩溃):
myDatePicker.setValue(UIColor.white,forKeyPath: "textColor")
我也尝试过(但也没有成功):
UILabel.appearance(whenContainedInInstancesOf: [UIDatePicker.self]).textColor = UIColor.white
在lightmode中,我的所有试验都无效(如屏幕快照中的蜜蜂所示):
我该怎么做才能在DatePicker中获得白色文本?
解决方法
是的,它有效!但是,属性 preferredDatePickerStyle = .wheels
必须设置在 textColor = .yourColor
之前,否则属性 textColor
可能永远不会受到影响。
我使用pickerView delegate
方法更改选择器视图的颜色。您可以通过添加以下委托方法来添加此功能:UIPickerViewDelegate,UIPickerViewDataSource
func pickerView(_ pickerView: UIPickerView,viewForRow row: Int,forComponent component: Int,reusing view: UIView?) -> UIView {
// change your picker view textColor etc. in here..
}
,
尝试一下,在下面添加扩展名:
__builtin_rintf
现在在viewDidLoad调用中:
extension UIDatePicker {
var textColor: UIColor? {
set {
setValue(newValue,forKeyPath: "textColor")
}
get {
return value(forKeyPath: "textColor") as? UIColor
}
}
}
在其他选择器属性(例如)之后调用它:
myDatePicker.textColor = .yourColor
如果要突出显示今天将相对选择器值设置为true:
myDatePicker.preferredDatePickerStyle = .wheels
myDatePicker.addTarget(self,action: #selector(handleDatePicker),for: .valueChanged)
myDatePicker.datePickerMode = .dateAndTime
myDatePicker.timeZone = NSTimeZone.local
myDatePicker.setValue(false,forKey: "highlightsToday")
myDatePicker.backgroundColor = .black
myDatePicker.textColor = .yourColor // here
这是结果: