AVPlayerViewController и ограничения представления

Я разрабатываю свое первое приложение, используя AVPlayerViewController. Мне нужно отобразить видеопоток, используя этот класс внутри представления. На скриншоте этот вид имеет темно-синий цвет. В этом представлении у меня есть Label и UICollectionView. Когда я нажимаю на элемент, отображается видео, но есть проблема с размером этого вида, размер изменяется, метка под видом становится не видимой, также есть пробел в верхней части вида. Я использую AutoLayout для установки ограничений, и они правильные, XCode не показывает проблем с макетом, но после нажатия на элемент для запуска видео во время выполнения XCode показывает много ошибок с ограничениями. Вот так выглядит макет, никаких ошибок или предупреждений.

Макет

Так выглядит приложение при запуске запуск приложения

Это проблема с макетом, когда я нажимаю на элемент UICollectionView, как вы можете видеть, AVPlayer с контроллером не заполняет темно-синий вид (оставляет свободное место), а также меняет свой размер, поэтому метка не видна. Также не работают кнопки этого контроллера, появляется при нажатии на видео. проблема с макетом

Это код, в котором я устанавливаю рамку для AVPlayerViewController, myView — это темно-синий вид.

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {

        let url = NSURL(string:"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8")
        playerController.player = player
        self.addChildViewController(playerController)
        self.myView.addSubview(playerController.view)
        playerController.view.frame = self.myView.frame
        let playerItem = AVPlayerItem(URL: url!)
        player.replaceCurrentItemWithPlayerItem(playerItem)
        player.play()   
    }

Это ошибка в выводе после выполнения этого кода:

Невозможно одновременно удовлетворить ограничения. Вероятно, по крайней мере одно из ограничений в следующем списке вам не нужно. Попробуйте следующее: (1) посмотрите на каждое ограничение и попытайтесь выяснить, чего вы не ожидаете; (2) найти код, который добавил нежелательное ограничение или ограничения, и исправить его.


person Anton    schedule 23.06.2016    source источник


Ответы (1)


Вместо представления я добавил Container View, AVKit Player View Controller на Storyboard и установил связь между ними, а также добавил код в ViewController:

let child = childViewControllers[0] as! AVPlayerViewController
child.view.clipsToBounds = true
child.player = player

теперь это работает

person Anton    schedule 09.07.2016