IOS 13 принес UIWindowScene. В моем приложении я использую следующий код для воспроизведения видео:
let playerVC = AVPlayerViewController()
let asset = AVURLAsset(url: videoURL)
let item = AVPlayerItem(asset: asset)
playerVC.player = AVPlayer(playerItem: item)
playerVC.showsPlaybackControls = true
targetViewController.present(playerVC, animated: true) {
playerVC.player?.play()
}
Проблема возникает, если я фиксирую ориентацию приложения на портрет. В поле зрения контроллера:
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return .portrait
}
Затем я представляю AVPlayerViewController. После запуска видео я поворачиваю устройство так, чтобы видео воспроизводилось в альбомном режиме. Затем я нажимаю крестик и AVPlayerViewController отклоняется. Контроллер под ним остается в ландшафтном режиме и не вращается назад. shouldAutorotate должен быть ложным в моем случае. Когда я делаю отладку представления, это показывает, что корневой UIWindowScene начинает находиться в ландшафтном режиме. Я не нашел API для принудительного поворота. В ios 12 и более ранних версиях все работает просто отлично.