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

Swift 更改日期选择器的文本颜色,swift,ios8,datepicker,Swift,Ios8,Datepicker,在iOS8中有没有办法更改日期选择器的文本颜色?我知道在iOS7和之前的版本中是不可能的,在第8版中有什么改变了吗 例如,我在Yahoo Weather中发现了修改过的选择器 在stackoverflow的位置找到了解决方案。如果你需要的话 将文本颜色更改为您的,并将此子类指定给您的选择器。因为白色具有魔力 只有负号,我发现选定数字的两行颜色仍然是灰色的 class ColoredDatePicker: UIDatePicker { var changed = false ove

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

例如,我在Yahoo Weather中发现了修改过的选择器

在stackoverflow的位置找到了解决方案。如果你需要的话 将文本颜色更改为您的,并将此子类指定给您的选择器。因为白色具有魔力

只有负号,我发现选定数字的两行颜色仍然是灰色的

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

我通过inspector更改了文本颜色(见下文)


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


仅当您同时设置两个属性时,它才能在iOS 10上工作

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

通过highlightsToday将黑色“今日”设置为“假”来解决问题会产生副作用-列表中不再有“今日”标签

我在这里找到了一种不同的解决方案,它工作完美,没有任何副作用:


看起来像一个肮脏的黑客,但这是我们目前的:改变datePickerMode重新正确绘制它。所以,只需将其设置为与所需模式不同的模式,然后将其更改回原始模式

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

我在XCode 11上使用最新的SwiftUI/Swift 5时遇到了类似的问题。上面的所有选项都不起作用,日期选择器要么保持黑色文本,要么崩溃

在SwiftUI文件中,将init()设置为var body之前

init() {
    UIDatePicker.appearance().backgroundColor = .clear
}
然后在var body视图中执行此操作

DatePicker(selection: $dob, in: ...Date(), displayedComponents: .date) {
   Text("Select Date")
}.colorInvert()
使用iOS深色主题将黑色文本反转为白色。看起来/效果很好。希望这能有所帮助。

这对我来说很有用:

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

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

可能重复:

您不应该自定义它。:-)如果你真的想,我打赌你可以。[datePicker设置值:[UIColor whiteColor]forKeyPath:@“textColor”];-在Objective CI中执行了此操作,但当前日期仍然为黑色。你知道我能做什么吗?我也有同样的问题。。。它改变了除当前日期之外的所有其他日期。有人找到了当前日期为黑色的修复方法吗?对我来说很好。当前日期为黑色没有问题,“唯一的负号”?任何看起来不完美的东西都会给挑剔的应用程序和客户带来巨大的负面影响。Apple尚未充分支持它。某些日期可能正在使用黑色。颜色方案(.light)将比反转颜色更好。第二行给了我一个错误:线程1:“-[\u UIDatePickerCalendarView setHighlightsToday:::未识别的选择器发送到实例0x7b50000c3800”
for view in datePicker.subviews {
    view.setValue(UIColor.white, forKeyPath: "textColor")
}