17

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

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

self.timePicker.setValue(UIColor.black, forKeyPath: "textColor")

或使用用户定义的运行时属性。但是对于更改 iOS 13 深色模式的选定日期颜色没有任何作用。使用白色背景和黑色文本颜色,我的日期选择器视图如下所示:

在此处输入图像描述

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

4

4 回答 4

12

您可以像这样设置self.window内部AppDelegate.m并覆盖界面样式

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

斯威夫特 5.*

if #available(iOS 13.0, *) {
    self.window?.overrideUserInterfaceStyle = .light
}
于 2019-10-07T10:51:18.923 回答
9

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

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

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

于 2019-09-24T21:13:55.490 回答
6

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

<key>UIUserInterfaceStyle</key>
<string>Light</string>

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

于 2019-12-12T20:55:15.117 回答
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
于 2020-02-10T07:41:51.763 回答