更改日期选择器的文本颜色

Posted

技术标签:

【中文标题】更改日期选择器的文本颜色【英文标题】:Changing text color of datepicker 【发布时间】:2015-05-27 01:12:16 【问题描述】:

有什么方法可以改变 ios8 中日期选择器的文本颜色吗?我认为这在 iOS7 及之前的版本中是不可能的,在第 8 版中有所改变?

例如,我在 Yahoo Weather 中发现了修改后的选择器!

【问题讨论】:

你不应该自定义它。 :-) 如果你真的想打赌,你可以打赌。 【参考方案1】:

仍然有效,Swift 4 更新

datePicker.setValue(UIColor.white, forKeyPath: "textColor")

这对我有用。

datePicker.setValue(UIColor.whiteColor(), forKeyPath: "textColor")

【讨论】:

[datePicker setValue:[UIColor whiteColor] forKeyPath:@"textColor"]; - 在 Objective-C 中 我这样做了,但当前日期仍然是黑色。知道我能做什么吗? 我遇到了同样的问题...它会更改除当前日期之外的所有其他日期。 有人找到解决当前日期变黑的方法吗? 对我来说工作得很好。当前日期为黑色没有问题。【参考方案2】:

只有同时设置这两个属性,它才能在 iOS 10 上运行。

datePicker.setValue(UIColor.white, forKeyPath: "textColor")
datePicker.setValue(false, forKeyPath: "highlightsToday")

【讨论】:

第二行给我一个错误:线程 1:“-[_UIDatePickerCalendarView setHighlightsToday:]: unrecognized selector sent to instance 0x7b50000c3800”【参考方案3】:

我已经通过检查器更改了文本颜色(见下文)

【讨论】:

有些日期被涂黑了【参考方案4】:

如果您不希望所选文本在开始时为黑色,则需要同时设置 textColor 和 highlightToday :

【讨论】:

【参考方案5】:

在 *** 的 comments 找到解决方案。如果你只需要 将文本颜色更改为您的并将此子类分配给您的选择器。因为 whiteColor 就像魔法一样。

只有减去我发现所选数字的两行颜色仍然是灰色的。

class ColoredDatePicker: UIDatePicker 
    var changed = false
    override func addSubview(view: UIView) 
        if !changed 
            changed = true
            self.setValue(UIColor.whiteColor(), forKey: "textColor")
        
        super.addSubview(view)
    

【讨论】:

“唯一的减号”?对于挑剔的应用程序和客户来说,任何看起来不完美的东西都是巨大的减号。 Apple尚未充分支持它。【参考方案6】:

这对我有用:

为所有日期选择器子视图设置文本颜色

for view in datePicker.subviews 
    view.setValue(UIColor.white, forKeyPath: "textColor")

可能重复:Set text color and font for UIDatePicker in iOS8/Swift

【讨论】:

【参考方案7】:

通过将 highlightToday 设置为“false”来解决黑色“Today”的问题有一个副作用 - 列表中不再有“Today”标签。

我在这里找到了一个不同的解决方案,它完美无缺,没有任何副作用: Set text color and font for UIDatePicker in iOS8/Swift

datePicker.setValue(UIColor.whiteColor(), forKeyPath: "textColor")
datePicker.datePickerMode = .CountDownTimer
datePicker.datePickerMode = .DateAndTime //or whatever your original mode was

看起来像一个肮脏的黑客,但这是我们目前所拥有的:更改 datePickerMode 会重新正确绘制它。因此,只需将其设置为与您所需模式不同的模式并将其更改回原始模式即可。

【讨论】:

【参考方案8】:

我发现了一种未在此处或其他线程中列出的方法。 https://***.com/a/59838215/4266735

我在 XCode 11 上使用最新的 SwiftUI / Swift 5 时遇到了类似的问题。以上所有选项都不起作用,DatePicker 要么保持黑色文本,要么崩溃。

在您的 SwiftUI 文件中,在 var body 之前设置 init()

init() 
    UIDatePicker.appearance().backgroundColor = .clear

然后在您的 var 正文视图中执行此操作

DatePicker(selection: $dob, in: ...Date(), displayedComponents: .date) 
   Text("Select Date")
.colorInvert()

使用 iOS 深色主题将黑色文本反转为白色。看起来/效果很好。希望这会有所帮助。

【讨论】:

也许使用 .colorScheme(.light) 会比反转颜色更好

以上是关于更改日期选择器的文本颜色的主要内容,如果未能解决你的问题,请参考以下文章

更改 Material-UI 日期选择器的标题颜色

更改角度日期选择器材质组件的颜色

如何更改GraphicalDatePickerStyle日期选择器Swiftui的选择颜色(AM,PM)和时间

如何更改 WPF 日期选择器的图标?

如何更改日期范围选择器的日期格式?

如何将颤动的日期选择器值添加到文本字段?