4

На нажатия кнопки я представляю собой AVPlayerViewController:Представление AVPlayerViewController StatusBar Делает UI Перейти

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() 
    } 
} 

Строка состояния этого AVPlayerViewController делает пользовательский интерфейс скачка тока View Controller. Могу ли я скрыть строку состояния внутри этого «presentViewController вызова?

Я попытался включая

playerViewController.prefersStatusBarHidden() 

но игрок продолжает показывать строку состояния.

Благодаря

+0

Благодаря @NSNoob, но он работает в моей нынешней ViewController (тот, в котором нажатие на кнопку, чтобы представить – robinyapockets

ответ

0

Я в конечном итоге просто создавая новый AVPlayerViewController, который я перехожу к нажатию кнопки, и внутри этого контроллера я добавил код:

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

Кажется, что больше кода, учитывая, что я просто просматриваю видео, но он работает плавно.

+0

вы говорите, что вы подклассы avplayerviewcontroller и добавили этот метод или же добавить. это в контроллере представления, который представил avplayerviewcontroller? –

0

Мое решение:

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() 
} 
}