Как программно изменить выбранный цвет даты в UIDatePicker - Swift 4? - PullRequest
0 голосов
/ 12 июня 2018

Я создал UIDatePicker программно и добавил к UITableViewCell.Все работает нормально, но цвет даты не меняется даже после применения tintColor.

Моя реализация:

   var startDatePicker: UIDatePicker = {
    let datePicker = UIDatePicker()
    datePicker.timeZone = NSTimeZone.local
    datePicker.backgroundColor = UIColor.clear
    datePicker.layer.cornerRadius = 5.0
    datePicker.datePickerMode = .date
    datePicker.maximumDate = Date()
    datePicker.isHidden = true
    datePicker.tintColor = UIColor.white
    datePicker.tag = 0
    datePicker.addTarget(self, action: #selector(datePickerValueChanged(datePicker:)), for: .valueChanged)
    return datePicker
}()

Я хочу показать белый цвет , но егопо умолчанию черный цвет .Смотрите также скриншот.

enter image description here

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

В конце концов, я нашел способ сделать это с помощью самого частного API KVC ( ViruMax's ans):

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

Но я заметил, если мы реализуем UIDatePicker с использованием closure , тогда вышеупомянутый API должен назначить как экземпляр закрытия UIDatePicker, так и внешний экземпляр UIDatePicker.Тогда только его работает.

Например, внешний экземпляр UIDatePicker (startDatePicker) также необходимо установить ниже KVC.

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

Ответ да, он работает для Swift 4.

Смотрите обновленный скриншот:

enter image description here

0 голосов
/ 12 июня 2018

Ссылка этот ответ.

Документация Apple гласит:

Внешний вид UIDatePicker не настраивается.Вы должны интегрировать средства выбора даты в свой макет, используя Auto Layout.Хотя средства выбора даты могут быть изменены, их следует использовать с внутренним размером содержимого. Apple Doc

Но если вы хотите настроить цвет текста, есть способ добиться этого с помощью частного API, как показано ниже:

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

однако частный API, который может перестать работать или даже вызвать сбой в любом будущем обновлении iOS.

Тогда стабильным решением будет создание собственного средства выбора даты с использованием UIPickerView, и при этом вы можете настроить цвет текста, например:

func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? {
    let attributedString = NSAttributedString(string: pickerData[row], attributes: [NSAttributedStringKey.foregroundColor : UIColor.white])
    return attributedString
}
...