iOS14-如何更改UIDatePicker的文本颜色

问题描述

使用iOS14.0.1,Swift5.3,Xcode12.0.1,

我尝试在iOS14中使用UIKit更改UIDatePicker的TextColor。

我读过here,您需要使用以下方法

let myDatePicker = UIDatePicker()
myDatePicker.tintColor = .white

我还尝试了以下操作(但是这会使我的应用在iOS14下崩溃):

myDatePicker.setValue(UIColor.white,forKeyPath: "textColor")

我也尝试过(但也没有成功):

UILabel.appearance(whenContainedInInstancesOf: [UIDatePicker.self]).textColor = UIColor.white

lightmode中,我的所有试验都无效(如屏幕快照中的蜜蜂所示):

enter image description here

我该怎么做才能在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

enter image description here

如果要突出显示今天将相对选择器值设置为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

这是结果:

enter image description here