0

I have the following code for a tvOS app. It plays video just as I would like, but the the contentOverlayView I've set does not appear. From examples I've looked at I think it should be working. Can someone please explain what I am doing wrong?

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)
}
}
Peter Wiley
  • 820
  • 7
  • 19

1 Answers1

0

I was confused about some things. Here's what worked:

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

}

The UIView displays just as expected.

Peter Wiley
  • 820
  • 7
  • 19