Attenzione: non funziona più con iOS 13 e Xcode 11.
================================================== ======================
Ho dovuto provare a cercare altri modi. Che non coinvolge la addSubview
finestra. Perché mi sposto nella finestra quando viene presentata la tastiera.
Obiettivo-C
- (void)setStatusBarBackgroundColor:(UIColor *)color {
UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {
statusBar.backgroundColor = color;
}
}
Swift
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
}
Chiamare questo modulo ha application:didFinishLaunchingWithOptions
funzionato per me.
NB Abbiamo un'app nell'app store con questa logica. Quindi immagino che vada bene con la politica dell'app store.
Modificare:
Utilizzare a proprio rischio. Forma il commentatore @Sebyddd
Un'app è stata rifiutata per questo motivo, mentre un'altra è stata accettata perfettamente. Lo considerano un utilizzo API privato, quindi sei soggetto a fortuna durante il processo di revisione :) - Sebyddd