Ответ 1
Мне удалось довольно легко заставить это работать на iPad Pro (который поддерживает параллельные приложения, а не только слайдеры). Вот код:
class ViewController: UIViewController {
override func viewWillLayoutSubviews() {
isThisAppFullScreen()
}
@discardableResult func isThisAppFullScreen() -> Bool {
let isFullScreen = UIApplication.shared.keyWindow?.frame == UIScreen.main.bounds
print("\(#function) - \(isFullScreen)")
return isFullScreen
}
}
Конечным результатом является то, что он напечатает "true", если представление полноэкранное, и "false", если он использует экран совместно с другим приложением, и запускается каждый раз, когда что-либо отображается, скрывается или изменяется.
Тогда проблема заключается в старых устройствах, которые поддерживают только сдвиг. С их помощью ваше приложение больше не изменяется. Вместо этого он просто отказывается от активного использования, а другое приложение становится активным.
В этом случае все, что вы можете сделать, это вставить логику в AppDelegate
для поиска applicationWillResignActive
и applicationDidBecomeActive
. Когда вы скользите, вы получаете applicationWillResignActive
, но не applicationDidEnterBackground
.
Вы можете посмотреть на это как на возможность, но вы не можете отличить скольжение и просмотр уведомлений от скольжения вниз с верхней части экрана. По этой причине он не идеален, но мониторинг жизненного цикла приложения - это, вероятно, лучшее, что вы можете сделать.