Я пытаюсь получить обновленную высоту строки состояния строки, используя didChangeStatusBarFrame
, но ...
Новый / обновленный фрейм не обновлен и иногда возвращает старую, а иногда и новую (правильную) высоту.
func application(_ application: UIApplication, didChangeStatusBarFrame oldStatusBarFrame: CGRect) {
print(UIApplication.shared.statusBarFrame.height) // Sometimes wrong
}
Мой текущий обходной путь - использовать DispatchQueue.main.async
:
func application(_ application: UIApplication, didChangeStatusBarFrame oldStatusBarFrame: CGRect) {
DispatchQueue.main.async {
print(UIApplication.shared.statusBarFrame.height) // So far correct in all my tests
}
}
Полагаю, это связано с тем, что в фоновом режиме происходит какая-то разметка, и statusBarFrame
необходимо сначала обновить.
В чем реальная причина, и есть ли лучший, не слишком хакерский способ ожидания правильной высоты строки состояния строки состояния?