UIApplication statusBarFrame не обновлен после didChangeStatusBarFrame - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь получить обновленную высоту строки состояния строки, используя 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 необходимо сначала обновить.

В чем реальная причина, и есть ли лучший, не слишком хакерский способ ожидания правильной высоты строки состояния строки состояния?

...