У меня есть стандартный UIDatePicker в нескольких проектах. Пикер отлично работает на iPhone, а также на iPad в легком режиме. Весь сборщик (фон и текст) не отображается, когда iPad находится в темном режиме. Изменение цвета фона и переднего плана не имеет никакого эффекта. Это может быть ошибка Apple, но я надеюсь, что у кого-то есть обходной путь. Я просмотрел этот вопрос , но ответы не достаточно хороши - по сути, только с использованием легкого режима.
Для справки, код сборщика:
@IBOutlet var datePicker: UIDatePicker? = UIDatePicker()
//or @IBOutlet weak var datePicker: UIDatePicker!
override func viewDidLoad() {
super.viewDidLoad()
let defaults: UserDefaults = UserDefaults.standard
let tempDate = defaults.value(forKey: "selectedDate") as! Date?
let calendar: NSCalendar = NSCalendar(calendarIdentifier: .gregorian)!
calendar.timeZone = NSTimeZone(name: "UTC")! as TimeZone
let components = calendar.components([.year, .month, .day], from: tempDate! as Date)
defaultDate = calendar.date(from: components as DateComponents)! as Date?
self.datePicker?.date = defaultDate as Date
}
/*
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
print(#function)
let defaults: UserDefaults = UserDefaults.standard
let tempDate = defaults.value(forKey: "selectedDate") as! Date?
let calendar: NSCalendar = NSCalendar(calendarIdentifier: .gregorian)!
calendar.timeZone = NSTimeZone(name: "UTC")! as TimeZone
let components = calendar.components([.year, .month, .day], from: tempDate! as Date)
defaultDate = calendar.date(from: components as DateComponents)! as Date?
self.datePicker?.date = defaultDate as Date
}
*/
@IBAction func datePickerAction(sender: AnyObject) {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EE. MMMM dd, yyyy"
dateFormatter.timeZone = NSTimeZone.default
dateString = dateFormatter.string(from: datePicker!.date)
selectedDate = datePicker?.date
selectedDateLabel.text = dateString
print(#function, "selected date: ", selectedDate!)
}