1

カスタムの「Over Full Screen」セグエで AVPlayerViewController のサブクラスをモーダルで開く一連のボタンを備えた UICollectionView を最初に提示するアプリを開発しています。UIViewControllerBasedStatusBarAppearance は、Info.plist で YES に設定されています。

以下は、Interface Builder のすべてのビュー コントローラーの小さい (ズームアウトしなければならなかったため、申し訳ありません) スクリーンショットです。 Interface Builder のスクリーンショット

セグエは IB で定義されました。ユーザーがコレクション ビューのセルをタップすると、performSegueWithIdentifier() を使用してセグエを実行します。

私が今経験している問題はこれです: 再生コントロールを非表示にする前後の横向き AVPlayer の比較 再生コントロールを非表示にする前後のポートレート AVPlayer の比較

横向きモードではステータス バーが再生コントロールと一緒に隠れるのに、縦向きモードでは正反対になるのはなぜですか?

私のAVPlayerViewControllerのサブクラスでprefersStatusBarHidden()がtrueを返すようにしても、何もしません。何を与える?

4

1 に答える 1

1

ちょうど解決策を考え出した:

extension UINavigationController {
    public override func childViewControllerForStatusBarHidden() -> UIViewController? {
        return self.childViewControllers.last
    }

    public override func childViewControllerForStatusBarStyle() -> UIViewController? {
        return self.childViewControllers.last
    }
}

そうです、アプリ内のすべてのNavigation View Controllerに対してこれら 2 つの関数をオーバーライドするだけです。これはハックであり、この問題の「正しい」解決策ではないと考えているため、注意して使用してください。

私が知る限り、これは決して失敗するべきではありません。私のアプリでは、すべてのナビゲーション VC に 1 つの子 VC がありますが、YMMV です。

于 2015-11-24T13:20:48.397 に答える