Можно ли изменить цвет текста datepicker в iOS8? У меня это невозможно в iOS7 и ранее, что-то изменилось в 8-й версии?
Например, я нашел модифицированную подборку в Yahoo Weather!
Можно ли изменить цвет текста datepicker в iOS8? У меня это невозможно в iOS7 и ранее, что-то изменилось в 8-й версии?
Например, я нашел модифицированную подборку в Yahoo Weather!
Найденное решение в комментариях в stackoverflow. Если вам нужно просто измените цвет текста на свой и назначьте этот подкласс для вашего выбора. Для 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)
}
}
Все еще работает, Swift 4 Update
datePicker.setValue(UIColor.white, forKeyPath: "textColor")
Это работает для меня.
datePicker.setValue(UIColor.whiteColor(), forKeyPath: "textColor")
Я изменил цвет текста через инспектор (см. ниже)
Если вы не хотите, чтобы выделенный текст был черным при запуске, вам нужно установить как textColor, так и highlightsToday:
Он работает с iOS 10, только если вы установили оба свойства.
datePicker.setValue(UIColor.white, forKeyPath: "textColor")
datePicker.setValue(false, forKeyPath: "highlightsToday")
Решение проблемы с черным "Today" с помощьюlightsToday, установленной в "false", имеет побочный эффект - у него больше нет ярлыка "Today" в списке.
Я нашел другое решение, которое прекрасно работает без каких-либо побочных эффектов: Установить цвет текста и шрифт для UIDatePicker в iOS8/Swift
datePicker.setValue(UIColor.whiteColor(), forKeyPath: "textColor")
datePicker.datePickerMode = .CountDownTimer
datePicker.datePickerMode = .DateAndTime //or whatever your original mode was
Похоже, грязный хак, но у нас есть на данный момент: изменение datePickerMode перерисовывает его правильно. Так что просто установите его на что-то отличное от желаемого режима и измените его обратно на оригинальный.