更改 UIDatePicker 选定的日期文本颜色以用于深色模式 (iOS 13)
Change UIDatePicker selected Date text Color for Dark mode (iOS 13)
无法找到在 iOS 13 深色模式下更改所选日期的文本颜色的解决方案。
我知道如何使用代码更改 UIPicker 视图的文本颜色
self.timePicker.setValue(UIColor.black, forKeyPath: "textColor")
或使用用户定义的运行时属性。但是没有任何方法可以更改 iOS 13 深色模式的选定日期颜色。使用白色背景和黑色文本颜色,我的日期选择器视图如下所示:
因此,将文本颜色更改为黑色,不会更改所选日期的文本颜色。它将所有其他文本颜色更改为黑色;但不是选定的。选定的一个保持白色,这是深色模式的默认设置。
我找到了解决问题的办法。如果我将 'hightlightsToday' 颜色标记为 false,则所选文本会显示您设置代码的颜色。
self.datePicker.setValue(false, forKey: "highlightsToday")
但是如果我想用不同的颜色突出显示我选择的日期文本颜色;在那种情况下,我不确定我必须更改哪个键值。所以我打算留下这个问题,以防有人知道如何更改暗模式的选定日期文本颜色。
您可以在 AppDelegate.m
中设置 self.window
并像这样覆盖界面样式
if (@available(iOS 13, *)) {
self.window.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
}
return YES;
Swift5.*
if #available(iOS 13.0, *) {
self.window?.overrideUserInterfaceStyle = .light
}
您可以通过 Info.plist 文件解决此问题。在 Info.plist 文件中添加“UIUserInterfaceStyle”键和“Light”值。
<key>UIUserInterfaceStyle</key>
<string>Light</string>
参考:https://github.com/xgfe/react-native-datepicker/issues/365#issuecomment-532875809
可以给UIDatePicker写一个扩展,然后设置datePicker文本的textColor为UIColor.label,会根据界面模式动态变化(light/dark模式)
extension UIDatePicker {
var textColor: UIColor? {
set {
setValue(newValue, forKeyPath: "textColor")
}
get {
return value(forKeyPath: "textColor") as? UIColor
}
}
var highlightsToday : Bool? {
set {
setValue(newValue, forKeyPath: "highlightsToday")
}
get {
return value(forKey: "highlightsToday") as? Bool
}
}
}
在此之后,您可以像这样设置 textColor 值:-
let datePicker = UIDatePicker()
datePicker.textColor = UIColor.label
无法找到在 iOS 13 深色模式下更改所选日期的文本颜色的解决方案。
我知道如何使用代码更改 UIPicker 视图的文本颜色
self.timePicker.setValue(UIColor.black, forKeyPath: "textColor")
或使用用户定义的运行时属性。但是没有任何方法可以更改 iOS 13 深色模式的选定日期颜色。使用白色背景和黑色文本颜色,我的日期选择器视图如下所示:
因此,将文本颜色更改为黑色,不会更改所选日期的文本颜色。它将所有其他文本颜色更改为黑色;但不是选定的。选定的一个保持白色,这是深色模式的默认设置。
我找到了解决问题的办法。如果我将 'hightlightsToday' 颜色标记为 false,则所选文本会显示您设置代码的颜色。
self.datePicker.setValue(false, forKey: "highlightsToday")
但是如果我想用不同的颜色突出显示我选择的日期文本颜色;在那种情况下,我不确定我必须更改哪个键值。所以我打算留下这个问题,以防有人知道如何更改暗模式的选定日期文本颜色。
您可以在 AppDelegate.m
中设置 self.window
并像这样覆盖界面样式
if (@available(iOS 13, *)) {
self.window.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
}
return YES;
Swift5.*
if #available(iOS 13.0, *) {
self.window?.overrideUserInterfaceStyle = .light
}
您可以通过 Info.plist 文件解决此问题。在 Info.plist 文件中添加“UIUserInterfaceStyle”键和“Light”值。
<key>UIUserInterfaceStyle</key>
<string>Light</string>
参考:https://github.com/xgfe/react-native-datepicker/issues/365#issuecomment-532875809
可以给UIDatePicker写一个扩展,然后设置datePicker文本的textColor为UIColor.label,会根据界面模式动态变化(light/dark模式)
extension UIDatePicker {
var textColor: UIColor? {
set {
setValue(newValue, forKeyPath: "textColor")
}
get {
return value(forKeyPath: "textColor") as? UIColor
}
}
var highlightsToday : Bool? {
set {
setValue(newValue, forKeyPath: "highlightsToday")
}
get {
return value(forKey: "highlightsToday") as? Bool
}
}
}
在此之后,您可以像这样设置 textColor 值:-
let datePicker = UIDatePicker()
datePicker.textColor = UIColor.label