更改日期选择器的文本颜色

Changing text color of datepicker

有什么方法可以更改 iOS8 中日期选择器的文本颜色?我知道这在 iOS7 和之前是不可能的,第 8 版有什么变化吗?

例如,我在 Yahoo Weather! 中找到了经过修改的选择器!

在 Whosebug 的 comments 找到解决方案。如果你只需要 将文本颜色更改为您的颜色并将此子类分配给您的选择器。因为 whiteColor 就像魔法一样。

只有减去我发现颜色两行所选数字仍然是灰色。

class ColoredDatePicker: UIDatePicker {
    var changed = false
    override func addSubview(view: UIView) {
        if !changed {
            changed = true
            self.setValue(UIColor.whiteColor(), forKey: "textColor")
        }
        super.addSubview(view)
    }
}

仍然有效,Swift 4 次更新

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

这对我有用。

datePicker.setValue(UIColor.whiteColor(), forKeyPath: "textColor")

我已经通过检查器更改了文本颜色(见下文)

如果您不希望所选文本在开始时为黑色,您需要同时设置 textColor 和 highlightsToday :

只有当您同时设置这两个属性时,iOS 10 才有效。

datePicker.setValue(UIColor.white, forKeyPath: "textColor")
datePicker.setValue(false, forKeyPath: "highlightsToday")

通过将 highlightsToday 设置为 "false" 来解决黑色 "Today" 的问题有一个副作用 - 它在列表中不再有 "Today" 标签。

我在这里找到了一个不同的解决方案,它工作完美,没有任何副作用: Set text color and font for UIDatePicker in iOS8/Swift

datePicker.setValue(UIColor.whiteColor(), forKeyPath: "textColor")
datePicker.datePickerMode = .CountDownTimer
datePicker.datePickerMode = .DateAndTime //or whatever your original mode was

看起来像一个肮脏的 hack,但我们目前有:更改 datePickerMode 重新正确绘制它。因此,只需将其设置为不同于您想要的模式,然后将其更改回原始模式即可。

我找到了一种未在此处或其他线程中列出的方法。

我运行进入了与最新的SwiftUI / Swift 5 on XCode 11类似的问题。上面的所有选项都没有工作,DatePicker 保持黑色文本或崩溃。

在您的 SwiftUI 文件中,在 var body

之前设置 init()
init() {
    UIDatePicker.appearance().backgroundColor = .clear
}

然后在您的 var body 视图中执行此操作

DatePicker(selection: $dob, in: ...Date(), displayedComponents: .date) {
   Text("Select Date")
}.colorInvert()

使用 iOS 深色主题将黑色文本反转为白色。 Looks/works太棒了。希望这有帮助。

这对我有用:

为所有日期选择器子视图设置文本颜色

for view in datePicker.subviews {
    view.setValue(UIColor.white, forKeyPath: "textColor")
}

可能重复:Set text color and font for UIDatePicker in iOS8/Swift