AVPlayerController - кнопки не работают в полноэкранном режиме

Я пытаюсь понять, как работают AVPlayer и AVPlayerController. Я встроил свой плеер в представление, поэтому у моего плеера есть два режима: маленький и полноэкранный. Когда он маленький, кнопка воспроизведения/воспроизведения и полноэкранная кнопка работают очень хорошо. Но как только он становится полноэкранным, следующие кнопки не действуют: воспроизведение, пауза, готово, свернуть.

Вот мой код:

    let videoURL = NSURL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")
    let avPlayer:AVPLayer = AVPlayer(url: videoURL! as URL)
    let playerController = AVPlayerViewController()
    playerController.player = avPlayer
    playerController.view.backgroundColor = UIColor.racingGreenColor();
    playerController.view.translatesAutoresizingMaskIntoConstraints = false;
    playerController.showsPlaybackControls = true;
    self.middleView.addSubview(playerController.view)
    //avPlayer.play()

    self.middleView.addConstraint(NSLayoutConstraint(item: playerController.view, attribute: .width, relatedBy: .equal, toItem: self.middleView, attribute: .width, multiplier: 1, constant: 0));
    self.middleView.addConstraint(NSLayoutConstraint(item: playerController.view, attribute: .height, relatedBy: .equal, toItem: self.middleView, attribute: .height, multiplier: 1, constant: 0));
    self.middleView.addConstraint(NSLayoutConstraint(item: playerController.view, attribute: .centerX, relatedBy: .equal, toItem: self.middleView, attribute: .centerX, multiplier: 1, constant: 0));
    self.middleView.addConstraint(NSLayoutConstraint(item: playerController.view, attribute: .centerY, relatedBy: .equal, toItem: self.middleView, attribute: .centerY, multiplier: 1, constant: 0));

Может кто-то мне помочь, пожалуйста ? Есть ли делегат для 4 интересующих меня методов?


person Melanie Journe    schedule 25.11.2016    source источник


Ответы (3)


self.addChildController(playerController);

Я добавил его на ваш контроллер основного вида, и он помогает «Готово» и «Свернуть».

person Melanie Journe    schedule 25.11.2016

У меня это работает как self.present(playerController, анимированный: правда, завершение: ноль)

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

person Dhara Ahuja    schedule 25.11.2016

Вы можете добавить AVPlayer в качестве слоя и добавить свои собственные кнопки.

player = [[[AVPlayer alloc] init...

playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
CGSize size = self.view.bounds.size;
float x = size.width/2.0-187.0;
float y = size.height/2.0 - 125.0;

playerLayer.frame = CGRectMake(x, y, 474, 320);
[playerLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
[self.view.layer addSublayer:playerLayer];
[player play];
person Dhara Ahuja    schedule 25.11.2016