Aviso: Não funciona mais com iOS 13 e Xcode 11.
======================================================== ========================
Tive que tentar procurar outras maneiras. Que não envolve addSubview
janela. Porque estou subindo a janela quando o teclado é apresentado.
Objective-C
- (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
}
Ligar para este formulário application:didFinishLaunchingWithOptions
funcionou para mim.
NB Temos um app na app store com essa lógica. Então, acho que está tudo bem com a política da app store.
Editar:
Use por sua conta e risco. Forme o comentador @Sebyddd
Eu tive um aplicativo rejeitado por causa disso, enquanto outro foi bem aceito. Eles consideram o uso privado da API, então você está sujeito à sorte durante o processo de revisão :) - Sebyddd