Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改UIDatePicker为暗模式选择的日期文本颜色(iOS 13)_Ios_Swift_Uidatepicker_Ios13_Ios Darkmode - Fatal编程技术网

更改UIDatePicker为暗模式选择的日期文本颜色(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

在iOS 13暗模式下,无法找到更改选定日期文本颜色的解决方案

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”];