example ios swift uidatepicker

example - Establezca el color del texto y la fuente para UIDatePicker en iOS8/Swift



uidatepicker swift 4 example (12)

He tenido problemas para configurar la fuente y el color de UIDatePicker . Todo lo demás en mi aplicación fue bastante sencillo de ajustar excepto esto. ¿Alguien sabe cómo hacer esto? Estoy usando Swift para iOS8 .


Agregar el color de texto y resaltarlo hoy a las variables definidas por el usuario hizo el truco por mí:


Cambiar el modo de fecha a otra cosa parece forzar un nuevo dibujo con el nuevo color de texto establecido.

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


Creo que esta es la solución definitiva para los temporizadores de cuenta atrás.
Es una expansión de la respuesta de Yildirimosman.

//text color datePicker.setValue(UIColor.whiteColor(), forKey: "textColor") //picker background datePicker.subviews[0].subviews[0].backgroundColor = UIColor.clearColor() //the picker''s own background view //dividers datePicker.subviews[0].subviews[1].backgroundColor = UIColor.whiteColor() datePicker.subviews[0].subviews[2].backgroundColor = UIColor.whiteColor() //labels: "hours" and "min" datePicker.subviews[0].subviews[3].setValue(UIColor.lightGrayColor(), forKey: "textColor") datePicker.subviews[0].subviews[4].setValue(UIColor.lightGrayColor(), forKey: "textColor") //refresh the tableview (to force initial row textColor to change to white) datePicker.subviews[0].setNeedsLayout() datePicker.subviews[0].layoutIfNeeded()


La API no proporciona una manera de hacer esto. Puedes hacer una réplica bastante convincente utilizando un UIPickerView en lugar de usar UIDatePicker. Esta here


Puede establecer el valor utilizando forKeyPath: "textColor". El código:

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

donde datePicker es su objeto UIDatePicker, y el primer parámetro es el color que desea


Puedes usar extensiones para obtener y establecer textColor como abajo

extension UIDatePicker { var textColor: UIColor? { set { setValue(newValue, forKeyPath: "textColor") } get { return value(forKeyPath: "textColor") as? UIColor } } }

Y luego establecer el color:

datePicker.textColor = .red


Quería hacer esto, pero configurarlo para cuando alguien tenga la fecha establecida antes o ahora. Tuve que volver a cargar los datos, pero cuando lo hice, terminé configurándolo en el DateTime actual al usar el ejemplo anterior.

Entonces, lo que hice fue establecer un valor temporal y luego configurarlo después de la recarga. Lo hace hacer un efecto animado, pero funciona. Si conoces una mejor manera, házmelo saber ...

func dateChanged(sender: UIDatePicker) { print(sender.date.description) let tempDate = sender.date let currentDate = NSDate() if originalDate.isLessThanDate(currentDate) { originalDate = sender.date if sender.date.isGreaterThanDate(currentDate) { sender.setValue(UIColor.blackColor(), forKeyPath: "textColor") sender.datePickerMode = .CountDownTimer sender.datePickerMode = .DateAndTime sender.date = tempDate sender.reloadInputViews() } } if sender.date.isLessThanDate(currentDate) { sender.setValue(UIColor.redColor(), forKeyPath: "textColor") sender.datePickerMode = .CountDownTimer sender.datePickerMode = .DateAndTime sender.date = tempDate sender.reloadInputViews() } }


Swift 4

override func layoutSubviews() { super.layoutSubviews() datePickerView.setValue(UIColor.white, forKeyPath: "textColor") }


Vi el problema que tenías y tenía un problema similar. Usando Xcode 6.3.1 utilicé este código en el mío y funcionó muy bien:

myPicker.backgroundColor = UIColor.whiteColor()

En caso de que esto ayude.


prueba esto:

/* set color for UIDatePicker font */ //text color of today string self.datePicker.performSelector("setHighlightsToday:", withObject:Constants.Colors.mainHeaderColor) //text color for hoglighted color self.datePicker.performSelector("_setHighlightColor:", withObject:Constants.Colors.mainHeaderColor) //other text color self.datePicker.setValue(Constants.Colors.mainHeaderColor, forKey: "textColor")


puedes usar

datePicker.setValue(UIColor.whiteColor(), forKey: "textColor") datePicker.setValue(false, forKey: "highlightsToday") //for selector color datePickerView.subviews[0].subviews[1].backgroundColor = UIColor.whiteColor() datePickerView.subviews[0].subviews[2].backgroundColor = UIColor.whiteColor()


solo necesitas configurar 2 líneas de código en viewdidLoad / viewWillAppear accoding donde estás usando DatePicker.

dobDatePicker.setValue(UIColor.whiteColor(), forKeyPath: "textColor") dobDatePicker.setValue(false, forKey: "highlightsToday")

Vea el resultado de esta manera: