Wie erkennt man den Vollbildmodus mit AVPlayerViewController in Swift?
Posted: 16 Jan 2025, 06:59
Ich versuche zu erkennen, wann sich der AVPlayerViewController im Vollbildmodus befindet, aber es fällt mir schwer, dies zu erreichen. Ich würde gerne wissen, wann der Benutzer die Schaltfläche „Erweitern“ auswählt, um in den Vollbildmodus zu gelangen, wie hier gezeigt:

Ich habe den entsprechenden Beobachter gemäß diesen Vorschlägen hinzugefügt:
Es scheint jedoch nie den Code print("Full Screen") zu erreichen. Es drückt auf „Drucken“ („Normaler Bildschirm“), unabhängig davon, ob sich der Player im Normal- oder Vollbildmodus befindet.
Vielen Dank!

Ich habe den entsprechenden Beobachter gemäß diesen Vorschlägen hinzugefügt:
- Erkennen Sie Videos, die im Hochformat oder im Vollbildmodus abgespielt werden Querformat
- So erkennen Sie den Vollbildmodus von AVPlayerViewController
Code: Select all
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)
{
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
}
}
}
}
Vielen Dank!