更改UIDatePicker为暗模式选择的日期文本颜色(iOS 13)
在iOS 13暗模式下,无法找到更改选定日期文本颜色的解决方案更改UIDatePicker为暗模式选择的日期文本颜色(iOS 13),ios,swift,uidatepicker,ios13,ios-darkmode,Ios,Swift,Uidatepicker,Ios13,Ios Darkmode,在iOS 13暗模式下,无法找到更改选定日期文本颜色的解决方案 extension UIDatePicker { var textColor: UIColor? { set { setValue(newValue, forKeyPath: "textColor") } get { return value(forKeyPath: "textColor") as? UI
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
}
}
}
我知道如何使用代码更改UIPicker视图的文本颜色
self.timePicker.setValue(UIColor.black, forKeyPath: "textColor")
或者使用用户定义的运行时属性。但是,在iOS 13暗模式下更改所选日期颜色没有任何效果。使用背景白色和黑色文本颜色,我的日期选择器视图如下所示:
因此,更改文本颜色为黑色时,不会更改选定日期文本的颜色。它将所有其他文本颜色更改为黑色;但不是所选的。选中的一个将保持白色,这是暗模式的默认设置。我找到了某种解决问题的方法。如果我将“hightlightsToday”颜色标记为false,则所选文本将以您设置的代码颜色显示
self.datePicker.setValue(false, forKey: "highlightsToday")
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
}
}
}
但是如果我想用不同的颜色突出显示我选择的日期文本颜色;在这种情况下,我不确定必须更改哪个键值。因此,我将保留这个问题,以防有人知道如何将所选日期文本颜色更改为暗模式。您可以在
AppDelegate.m
中设置self.window
,并像这样覆盖界面样式
if (@available(iOS 13, *)) {
self.window.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
}
return YES;
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
}
}
}
斯威夫特5*
if #available(iOS 13.0, *) {
self.window?.overrideUserInterfaceStyle = .light
}
您可以通过Info.plist文件解决此问题。在Info.plist文件中添加“UIUserInterfaceStyle”键和“Light”值
<key>UIUserInterfaceStyle</key>
<string>Light</string>
UIUserInterfaceStyle
轻的
参考:您可以为UIDatePicker编写扩展,然后将日期选择器文本的textColor设置为UIColor.label,它将根据界面模式(亮/暗模式)动态更改 在此之后,您可以设置textColor值,如下所示:-
let datePicker = UIDatePicker()
datePicker.textColor = UIColor.label
使用
UIColor.label
,而不是UIColor.black
。很抱歉,没有得到它。我为什么要使用标签?我正在换颜色。我应该把颜色作为键域“textColor”的值吗?试试我说的<代码>标签是一种颜色。不要在代码中更改颜色!将Interface Builder中的所有颜色设置为默认值,问题是,我们的应用程序背景颜色为深灰色。因此,我使用默认模式,它将使文本颜色为白色,背景清晰。因此,我们希望在暗模式和正常模式下保持相同,即黑色文本颜色和白色背景。这也使得嵌入式地图在应该使用暗模式时使用浅色方案。对于Obj-C,这对我来说很有用:[self.datePicker setValue:[UIColor whiteColor]forKey:@“textColor”];