Как предотвратить исчезновение строки состояния до того, как UIImagePickerController закроет весь экран?

Вот GIF, показывающий проблему:

При представлении UIImagePickerController как это:

self.present(imagePicker, animated: true, completion: nil)

строка состояния исчезнет до того, как средство выбора изображений станет полноэкранным.

Проблема, с которой я столкнулся, заключается в том, что когда строка состояния исчезает в облаке дыма, панель навигации поднимается вверх, занимая пустоту, оставленную строкой состояния. когда UIImagePickerController закрывается, строка состояния отображается на своем законном месте.

В настоящее время я не настраиваю строку состояния в любом случае, все по умолчанию.

Есть ли способ предотвратить UIStatusBar от исчезновения, по крайней мере до UIImagePickerController анимация завершена?

1 ответ

Если вы хотите, чтобы ваша строка состояния оставалась в верхней части экрана, вы должны создать собственное окно и применить анимацию вручную. Это может помочь:

var newWindow = UIWindow()
let newController = viewControllerToPresent()
var animationDuration = 0.4 // or whatever you want.
// setting newController as root of new window.
self.window.rootViewController = newController
self.window.windowLevel = UIWindowLevelStatusBar
self.window.backgroundColor = .clear
self.window.frame = CGRect(x: 0, y: UIScreen.main.bounds.height, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
self.window.isHidden = false

UIView.animate(withDuration: animationDuration) { 
    self.window.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
}
Другие вопросы по тегам