Отказ от AVPlayerController на весь экран с помощью жеста смахивания в приложении только для портрета приводит к черному экрану? - PullRequest
1 голос
/ 10 апреля 2020

У меня есть приложение, которое заблокировано в портретном режиме (только флажок "портрет" отмечен в настройках сборки в XCode). В ViewController у меня есть AVPlayerViewController в контейнере, который загружает удаленный URL.

Насколько я понимаю, начиная с WWDC19 / iOS 13, AVPlayerController автоматически обрабатывает просмотр ландшафта, даже в приложениях, которые предназначены только для переноса. Так обстоит дело в моем приложении - AVPlayerController правильно переключается в горизонтальное положение с поворотом устройства. Кроме того, если я использую кнопку закрытия / «X», чтобы вывести плеер из полноэкранного режима в любой ориентации, он корректно возвращает обратно в портретную ориентацию.

Проблема с жестами и проведением пальцем по экрану. Если я проведу пальцем по экрану в портретном полноэкранном режиме, он вернется обратно к портретному ViewController. Однако, если я проведу пальцем по экрану в полноэкранном режиме, я получу черный экран. Звук продолжает воспроизводиться, но приложение полностью не отвечает, просто черный экран.

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

Я попытался поиграть с viewWillAppear из ViewController и попробовал делегировать методы AVPlayerViewControllerDelegate, но безуспешно.

Вот код, который я использую в своем классе ViewController:

import UIKit
import AVKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        configureVideoPlayer()
    }


    private func configureVideoPlayer() {
        let playerViewController = AVPlayerViewController()
        let url: URL! = URL(string: "https://www.radiantmediaplayer.com/media/bbb-360p.mp4")
        let player = AVPlayer(url: url)

        playerViewController.player = player
        playerViewController.frame = containerView.bounds
        containerView.addSubview(playerViewController.view)
        addChild(playerViewController)
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...