在iOS10中更改UIDatePicker TextColor

我有一种方法可以在10之前的iOS版本上更改UIDatePicker的文本颜色,但是对于iOS10,这些解决方案似乎不再起作用。 如何恢复更改UIDatePickertextColor的function?

  if #available(iOS 10.0, *) { //Not sure of a way to do something similar here. } else { //The following lines change the textColor of UIDatePicker to white in iOS9 and older. self.setValue(UIColor.white, forKey: "textColor") self.sendAction(Selector("setHighlightsToday:"), to: nil, for: nil) } 

似乎没有任何改变,因为我甚至可以使用Swift 3实现它,如下所示。

 import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let temp: UIDatePicker = UIDatePicker(frame: self.view.frame) temp.setValue(UIColor.purple, forKey: "textColor") view.addSubview(temp) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } } 

您正在使用的代码是设置UIDatePicker的私有属性。 这是使用私有财产的危险。 无法保证它将在下一个操作系统版本中运行。

如果Apple检测到您正在做的事情,他们会拒绝您的应用。

除非有这样做的公共界面,否则你可能会失败。 (而且我不知道用于更改日期选择器的文本颜色的公共界面。)

打开拾取器时,文本颜色似乎重置。

我能够通过使用以下内容来更改文本颜色:

 setValue(UIColor.white, forKey: "textColor") 

日期选择器出现在屏幕上之后。 之后很快做到并且不明显。

我不确定你如何使用你的选择器,但我已将我的设置为文本字段的输入视图,因此能够使用textfield委托:

 func textFieldDidBeginEditing(textField: UITextField) 

知道拣货员何时被打开。

我确实需要稍微延迟发送才能正常生效。

更新

而不是使用UIDatePicker的私有textColor属性,通过使用UILabel的外观和公共textColor属性可以更好地实现。

 UILabel.appearanceWhenContainedInInstancesOfClasses([UIDatePicker.self]).textColor = UIColor.whiteColor() 

在日期选择器显示工作后仍需要调用它。