更改datepicker的文本颜色

时间:2015-03-23 21:14:40

标签: swift ios8 datepicker

是否可以在iOS8中更改datepicker的文本颜色?我认为这在iOS7和之前是不可能的,第8版有什么变化吗?

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

enter image description here

8 个答案:

答案 0 :(得分:56)

仍然有效,Swift 4更新

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

这适合我。

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

答案 1 :(得分:16)

我通过检查员更改了文字颜色(见下文)

enter image description here

答案 2 :(得分:11)

在stackoverflow的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)
    }
}

答案 3 :(得分:11)

如果您不想在开始时将所选文字设为黑色,则需要同时设置textColor和highlightToday:

enter image description here

答案 4 :(得分:9)

只有在设置了两个属性时才能在iOS 10上运行。

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

答案 5 :(得分:2)

这对我有用:

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

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

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

答案 6 :(得分:0)

通过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

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

答案 7 :(得分:0)

我发现这里或其他线程中未列出的方法。 https://stackoverflow.com/a/59838215/4266735

我在XCode 11上使用最新的SwiftUI / Swift 5遇到了类似的问题。以上所有选项均不起作用,并且DatePicker保持黑色文本或崩溃。

在您的SwiftUI文件中,在var body之前设置init()

init() {
    UIDatePicker.appearance().backgroundColor = .clear
}

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

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

使用iOS Dark Theme将黑色文本反转为白色。看起来/工作很棒。希望这会有所帮助。