Wie erkennt man den Vollbildmodus mit AVPlayerViewController in Swift?

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Wie erkennt man den Vollbildmodus mit AVPlayerViewController in Swift?

by Guest » 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:

Image


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
Der entsprechende Code:

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

Top