0

Я использую AVPlayerViewController, который я хочу затухать, когда видео заканчивается ... Я могу записать событие конца видео, и я собираю код для работы AVPlayer, но для AVPlayerViewController нет.Затухание AVPlayerViewController при завершении

self.playerItem = AVPlayerItem(URL: videoURL) 
self.player = AVPlayer(playerItem: self.playerItem) 
self.playerLayer = AVPlayerLayer(player: self.player) 
self.streamPlayer = AVPlayerViewController() 
self.streamPlayer.player = self.player 
self.streamPlayer.view.frame = CGRect(x: 128, y: 222, width: 512, height: 256) 

Этот код работает тоже, но идет полный Экран- я не хочу весь экран ...

//self.presentViewController(self.streamPlayer, animated: true) { 
// self.streamPlayer.player!.play() 
//} 

Я использую это?

self.view.addSubview(self.streamPlayer.view) 
self.streamPlayer.player!.play() 

Захват событий ..

override func viewWillAppear(animated: Bool) { 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "finishedPlaying:", name: AVPlayerItemDidPlayToEndTimeNotification, object: playerItem) 
} 

Код события ...

функ finishedPlaying (myNotification: NSNotification) {

let fadeOut = CABasicAnimation(keyPath: "opacity") 
    fadeOut.fromValue = 1.0 
    fadeOut.toValue = 0.0 
    fadeOut.duration = 8.0 
    fadeOut.delegate = self 
    fadeOut.setValue("video", forKey:"fadeOut") 
    fadeOut.removedOnCompletion = false 
    fadeOut.fillMode = kCAFillModeForwards 

Эта линия не делает ничего с AVPlayerViewController/С AVPlayer он сильно исчезает?

playerLayer.addAnimation(fadeOut, forKey: nil) 

Это просто удаляет AVPlayerViewController, планируйте B, если я не могу сделать эту работу!

//self.streamPlayer.view.removeFromSuperview() 
    print("VIDEO finished") 
} 

ответ

1

AVPlayerViewController имеет собственный AVPlayerLayer и не знает о AVPlayerLayer вы создали. Таким образом, линия playerLayer.addAnimation (fadeOut, forKey: nil) не влияет. Вы должны установить или анимировать альфа-значение представления AVPlayerViewController. Для анимации затухания вы можете посмотреть методы + [UIView animateWithDuration: (...)] и вызвать self.streamPlayer.view.removeFromSuperview() в обработчике завершения.