2017-07-29 2 views
0

J'ai le code suivant pour une application tvOS. Il lit la vidéo comme je le souhaite, mais le fichier contentOverlayView que j'ai défini n'apparaît pas. D'après les exemples que j'ai examinés, je pense que cela devrait fonctionner. Quelqu'un peut-il expliquer s'il vous plaît ce que je fais mal?tvOS/Swift 3: Pourquoi contentOverlayView n'est-il pas affiché?

import Foundation 
import UIKit 
import AVKit 

class videoPlayer: AVPlayerViewController { 

var thePlayer: AVPlayer? 
var movieToPlay: AVPlayerItem? 
var movieURL: String? 
let theVideoPlayer = AVPlayerViewController() 

@IBOutlet weak var videoInfo: UIView! 

override func viewDidLoad(){ 
    theVideoPlayer.contentOverlayView?.addSubview(videoInfo) 
    theVideoPlayer.player = thePlayer 

    self.view.addSubview(theVideoPlayer.view) 
    theVideoPlayer.view.frame = self.view.frame 
    NotificationCenter.default.addObserver(self, selector: #selector(videoPlayer.videoDone), name: NSNotification.Name(rawValue: "AVPlayerItemDidPlayToEndTimeNotification"), object: thePlayer?.currentItem) 
    playVideo(movieURL!) 

} 

func playVideo(_ movieURL: String){ 
    let movieToPlay = AVPlayerItem(url: URL(string: movieURL)!) 
    thePlayer = AVPlayer(playerItem: movieToPlay) 
    thePlayer!.play() 
} 

func videoDone(){ 
    dismiss(animated: true, completion: nil) 
} 
} 

Répondre

0

J'étais confus au sujet de certaines choses. Voici ce qui a fonctionné:

import Foundation 
import UIKit 
import AVKit 

class videoPlayer: UIViewController { 

    var movieURL:String = "" 
    var movieTitle:String = "" 
    var playerController:AVPlayerViewController? 

    @IBOutlet weak var videoInfo: UIView! 
    @IBOutlet var titleLabel: UILabel! 


    override func viewDidLoad(){ 
     titleLabel.text = movieTitle 
     playerController = AVPlayerViewController() 
     playerController?.player = AVPlayer() 
     self.addChildViewController(playerController!) 
     self.view.addSubview((playerController?.view)!) 
     playerController?.didMove(toParentViewController: self) 

     playerController?.view.frame = self.view.frame 

     playerController?.contentOverlayView?.addSubview(videoInfo) 

     let movieToPlay = AVPlayerItem(url: URL(string: movieURL)!) 
     playerController?.player = AVPlayer(playerItem: movieToPlay) 
     playerController?.player?.play() 

     NotificationCenter.default.addObserver(self, selector: #selector(videoDone), name: NSNotification.Name(rawValue: "AVPlayerItemDidPlayToEndTimeNotification"), object: playerController?.player?.currentItem) 
      } 


    func videoDone(){ 
     print("DONE") 
     dismiss(animated: true, completion: nil) 
    } 

} 

L'UIView s'affiche comme prévu.