Advertencia: ya no funciona con iOS 13 y Xcode 11.
================================================ ======================
Tuve que intentar buscar otras formas. Lo que no implica addSubview
en la ventana. Porque estoy subiendo la ventana cuando se presenta el teclado.
C objetivo
- (void)setStatusBarBackgroundColor:(UIColor *)color {
UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {
statusBar.backgroundColor = color;
}
}
Rápido
func setStatusBarBackgroundColor(color: UIColor) {
guard let statusBar = UIApplication.sharedApplication().valueForKey("statusBarWindow")?.valueForKey("statusBar") as? UIView else {
return
}
statusBar.backgroundColor = color
}
Swift 3
func setStatusBarBackgroundColor(color: UIColor) {
guard let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView else { return }
statusBar.backgroundColor = color
}
Llamar a este formulario application:didFinishLaunchingWithOptions
funcionó para mí.
NB Tenemos una aplicación en la tienda de aplicaciones con esta lógica. Así que supongo que está de acuerdo con la política de la tienda de aplicaciones.
Editar:
Úselo bajo su propio riesgo. Forme el comentarista @Sebyddd
Tuve una aplicación rechazada debido a esto, mientras que otra fue aceptada sin problemas. Lo consideran un uso privado de la API, por lo que está sujeto a suerte durante el proceso de revisión :) - Sebyddd