4

On-Taste drücken ich eine AVPlayerViewController präsentiere:AVPlayerViewController StatusBar Presenting Macht UI Jump

func playVideoPressed(sender: UIButton){ 
    let videoURL = NSURL(string: "someUrl") 
    let player = AVPlayer(URL: videoURL!) 
    let playerViewController = AVPlayerViewController() 
    playerViewController.player = player 
    self.presentViewController(playerViewController, animated: true) { 
    playerViewController.player!.play() 
    } 
} 

Diese Statusleiste des AVPlayerViewController macht die Benutzeroberfläche des aktuellen Sprung-View-Controller. Kann ich die Statusbar aus dieser „presentViewController Anruf verbergen?

Ich habe versucht, einschließlich

playerViewController.prefersStatusBarHidden() 

aber der Spieler weiterhin die Statusleiste angezeigt.

Dank

+0

Dank @NSNoob, aber es in meinem aktuellen Viewcontroller (die man arbeitet, wo die Taste präsentieren – robinyapockets

Antwort

0

Ich landete Ich erschaffe einfach einen neuen AVPlayerViewController, den ich vom Drücken der Taste abtrenne, und innerhalb dieses Controllers habe ich den Code hinzugefügt:

override func prefersStatusBarHidden() -> Bool { 
    return true 
} 

Scheint mehr Code, wenn ich bedenke, dass ich gerade ein Video ansehe, aber es funktioniert glatt.

+0

sagen Sie, dass Sie avplayerviewcontroller und hinzugefügt, um diese Methode subclassed oder haben Sie hinzufügen. dies in der Ansicht Controller, der avplayerviewcontroller vorgestellt? –

0

Meine Lösung:

class MyAVPlayerViewController: AVPlayerViewController { 
var presenting: Bool = true 

override var prefersStatusBarHidden: Bool { 
    if presenting { 
     return false 
    } else { 
     return super.prefersStatusBarHidden 
    } 
} 

override var childViewControllerForStatusBarHidden: UIViewController? { 
    if presenting { 
     return nil 
    } else { 
     return super.childViewControllerForStatusBarHidden 
    } 
} 

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 
    presenting = false 
    setNeedsStatusBarAppearanceUpdate() 
} 
}