Предупреждение: он больше не работает с iOS 13 и Xcode 11.
================================================== ======================
Пришлось искать другие пути. Что не связано addSubview
с окном. Потому что я двигаюсь вверх по окну, когда отображается клавиатура.
Цель-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
}
Вызов этой формы application:didFinishLaunchingWithOptions
у меня сработал.
NB. У нас есть приложение в магазине приложений с такой логикой. Так что я думаю, что с политикой магазина приложений все в порядке.
Редактировать:
Используйте на свой риск. Сформируйте комментатора @Sebyddd
Одно приложение было отклонено из-за этого, а другое было принято нормально. Они действительно считают это частным использованием API, так что вам может повезти в процессе проверки :) - Sebyddd