2017-07-29 16 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は期待どおりに表示されます。

関連する問題