ios7 - tintes - Obtén color de tinte global a partir del código
tabla de colores de pelo (6)
En la aplicación delegada puedes configurarlo por
UIColor *globalTint = [[[UIApplication sharedApplication] delegate] window].tintColor;
¿Hay alguna forma de obtener el color de tinte global de mi proyecto por código? Para evitar un malentendido, me refiero al color de tinte global, que puedo configurar en el inspector de archivos.
Fácil.
C objetivo:
UIColor *tintColor = [[self view]tintColor];
Rápido:
let tintColor = self.view.tintColor;
Esto debería obtener el tintColor establecido en la aplicación. Si lo cambias, esta propiedad debería actualizarse. Esto supone que está dentro de un viewController o una subclase de uno y que no ha anulado el tintColor en algún superView entre esta vista y la ventana.
Actualización: tenga en cuenta que si está intentando obtener el color del tinte de un controlador de vista que no se ha agregado a la ventana, no tendrá el color del tinte personalizado ya que este color se hereda del objeto de la ventana. Gracias a @ManuelWa por señalar esto en los comentarios.
La respuesta de Max es correcta, pero descubrí que tiene que obtener la ventana del controlador de navegación:
self.navigationController.view.window.tintColor = [UIColor redColor];
Sin embargo, tenga en cuenta que esto no funcionaría si ha configurado el tintColor manualmente desde Storyboard. El valor de Storyboard se utilizará si lo has hecho. He presentado un error con Apple sobre esto. Creo que este código no debe ignorarse incluso si hemos configurado el tintColor desde Storyboard.
Swift 4.x :
extension UIColor {
static var tintColor: UIColor {
get {
return UIApplication.shared.keyWindow?.rootViewController?.view.tintColor ?? .red
}
}
}
Uso
textField.textColor = .tintColor
[UIApplication sharedApplication].delegate.window.rootViewController.view.tintColor
Parece funcionar.
[UIApplication sharedApplication].keyWindow.tintColor;