将UIDatePicker更改为深色模式的日期文本颜色(iOS 13)

时间:2019-09-24 20:54:34

标签: ios swift uidatepicker ios13 ios-darkmode

难以找到在iOS 13暗模式下更改所选日期的文本颜色的解决方案。

我知道如何使用代码更改UIPicker视图的文本颜色

InputStream in = socket.getInputStream();
String str = readAll(in);
in.close();

或使用用户定义的运行时属性。但是,无法为iOS 13深色模式更改所选日期颜色。在背景为白色和黑色为文本的情况下,我的日期选择器视图如下所示:

enter image description here

因此,如果将文本颜色更改为黑色,则不会更改所选日期文本颜色。它将所有其他文本颜色更改为黑色;但不是所选的。所选的一个保持白色,这是黑暗模式的默认设置。

4 个答案:

答案 0 :(得分:6)

您可以在self.window内设置AppDelegate.m并像这样覆盖接口样式

if (@available(iOS 13, *)) {
    self.window.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
}
return YES;

快速5。*

if #available(iOS 13.0, *) {
    self.window?.overrideUserInterfaceStyle = .light
}

答案 1 :(得分:5)

我找到了可以解决问题的方法。如果我将“ hightlightsToday”颜色标记为false,则所选文本将以您设置代码的颜色显示。

self.datePicker.setValue(false, forKey: "highlightsToday")

但是,如果我想用其他颜色突出显示我选择的日期文本颜色;在那种情况下,不确定我必须更改哪个键值。因此,如果有人知道如何更改暗模式下的选定日期文本颜色,我将保留这个问题。

答案 2 :(得分:1)

您可以为UIDatePicker编写扩展名,然后将datePicker文本的textColor设置为UIColor.label,它将根据界面模式(亮/暗模式)动态更改。

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

答案 3 :(得分:0)

您可以通过Info.plist文件解决此问题。在Info.plist文件中添加“ UIUserInterfaceStyle”键和“ Light”值。

参考:https://github.com/xgfe/react-native-datepicker/issues/365#issuecomment-532875809