2017-07-29 103 views
0

我對tvOS應用程序有以下代碼。它按照我的意願播放視頻,但我設置的contentOverlayView未顯示。從我看過的例子來看,我認爲它應該起作用。有人能解釋我做錯了什麼嗎?tvOS/Swift 3:爲什麼contentOverlayView不顯示?

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) 
} 
} 

回答

0

我對某些事情感到困惑。這是什麼工作:

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) 
    } 

} 

UIView顯示與預期一樣。