是否可以在iOS8中更改datepicker的文本颜色?我认为这在iOS7和之前是不可能的,第8版有什么变化吗?
例如,我在Yahoo Weather中找到了修改过的选择器!
答案 0 :(得分:56)
仍然有效,Swift 4更新
datePicker.setValue(UIColor.white, forKeyPath: "textColor")
这适合我。
datePicker.setValue(UIColor.whiteColor(), forKeyPath: "textColor")
答案 1 :(得分:16)
答案 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)
答案 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将黑色文本反转为白色。看起来/工作很棒。希望这会有所帮助。