为深色模式更改 UIDatePicker 选定的日期文本颜色(iOS 13)
Posted
技术标签:
【中文标题】为深色模式更改 UIDatePicker 选定的日期文本颜色(iOS 13)【英文标题】:Change UIDatePicker selected Date text Color for Dark mode (iOS 13) 【发布时间】:2020-01-25 00:47:08 【问题描述】:在 ios 13 深色模式下无法找到更改所选日期的文本颜色的解决方案。
我知道如何使用代码更改 UIPicker 视图的文本颜色
self.timePicker.setValue(UIColor.black, forKeyPath: "textColor")
或使用用户定义的运行时属性。但是对于更改 iOS 13 深色模式的选定日期颜色没有任何作用。使用白色背景和黑色文本颜色,我的日期选择器视图如下所示:
因此,将文本颜色更改为黑色,不会更改所选日期文本颜色。它将所有其他文本颜色更改为黑色;但不是选定的。选定的一个保持白色,这是暗模式的默认设置。
【问题讨论】:
使用UIColor.label
,而不是UIColor.black
。
抱歉没听懂。为什么要使用标签?我正在改变颜色。我应该将颜色作为关键字段“textColor”的值吗?
试试我说的。 label
是一种颜色。
不要更改代码中的颜色!将 Interface Builder 中的所有颜色设置为 default
嗯,问题是,我们的应用背景颜色是深灰色。所以我使用默认模式,它将文本颜色变为白色,背景清晰。因此,我们希望在深色模式和普通模式下保持相同,即黑色文本颜色和白色背景。
【参考方案1】:
我找到了某种解决问题的方法。如果我将“hightlightsToday”颜色标记为 false,则所选文本将显示为您设置代码的颜色。
self.datePicker.setValue(false, forKey: "highlightsToday")
但是,如果我想用不同的颜色突出显示我选择的日期文本颜色;在这种情况下,不确定我必须更改哪个键值。所以我将把这个问题留着,以防有人知道如何为暗模式更改选定的日期文本颜色。
【讨论】:
【参考方案2】:您可以在AppDelegate.m
中设置self.window
并像这样覆盖界面样式
if (@available(iOS 13, *))
self.window.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
return YES;
斯威夫特 5.*
if #available(iOS 13.0, *)
self.window?.overrideUserInterfaceStyle = .light
【讨论】:
这也使得嵌入式地图在应该使用深色方案时使用浅色方案。【参考方案3】:您可以通过 Info.plist 文件解决此问题。在 Info.plist 文件中添加“UIUserInterfaceStyle”键和“Light”值。
<key>UIUserInterfaceStyle</key>
<string>Light</string>
参考:https://github.com/xgfe/react-native-datepicker/issues/365#issuecomment-532875809
【讨论】:
【参考方案4】:你可以为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
【讨论】:
对于 Obj-C。这对我有用: [self.datePicker setValue:[UIColor whiteColor] forKey:@"textColor"];以上是关于为深色模式更改 UIDatePicker 选定的日期文本颜色(iOS 13)的主要内容,如果未能解决你的问题,请参考以下文章