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 AVPlayerViewControllerDer 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