Wie erkennt man den Vollbildmodus mit dem AVPlayerViewController in Swift?

Ich versuche zu erkennen, wann dasAVPlayerViewController ist im Vollbildmodus, aber es fällt mir schwer, das zu erreichen. Ich möchte wissen, wann der Benutzer die Erweiterungsschaltfläche wählt, um den hier gezeigten Vollbildmodus aufzurufen:

Ich habe den entsprechenden Beobachter gemäß diesen Vorschlägen hinzugefügt:

Detect Video wird im Hoch- oder Querformat im Vollbildmodus wiedergegeben. So erkennen Sie den Vollbildmodus von AVPlayerViewController

Der entsprechende Code:

var avWidth:CGFloat = 375
var avHeight:CGFloat = 300

override func viewDidLoad()
{
    super.viewDidLoad()

    let path = NSBundle.mainBundle().pathForResource("cable pressback", ofType: "mp4")
    let url = NSURL.fileURLWithPath(path!)
    let player = AVPlayer(URL: url)

    playerViewController.player = player

    playerViewController.view.frame = CGRectMake(0, 100, self.view.frame.size.width, 300)

    playerViewController.view.translatesAutoresizingMaskIntoConstraints = true

    view.addSubview(playerViewController.view)

    self.addChildViewController(playerViewController)

    [playerViewController .addObserver(self, forKeyPath:"videoBounds" , options: NSKeyValueObservingOptions.New, context: nil)]

}

override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>)
{
    print("playerViewController.view.frame = \(playerViewController.view.frame)")

    if keyPath == "videoBounds"
    {
        let rect = change!["new"]! as! NSValue

        if let newrect = rect.CGRectValue() as CGRect?
        {
            if newrect.width > 0 || newrect.height > 0
            {
                if avWidth > 0 || avHeight > 0
                {
                    if newrect.width > avWidth || newrect.height > avHeight
                    {
                        print("Full Screen")
                    }
                    else if newrect.width < avWidth || newrect.height < avHeight
                    {
                        print("Normal screen")
                    }
                }
                avWidth = newrect.width
                avHeight = newrect.height
            }
        }
    }
}

Allerdings scheint es nie den Code zu erreichenprint("Full Screen"). Es trifftprint("Normal Screen") unabhängig davon, ob sich der Player im normalen oder im Vollbildmodus befindet.

Vielen Dank

Antworten auf die Frage(8)

Ihre Antwort auf die Frage