を回転していない私はその中のすべての他のコントローラを管理し、ルートビューコントローラを持っているので、私はrootViewControllerはこのように言ったでshouldAutorotateとsupportedInterfaceOrientationsをオーバーライド:私のアプリは肖像画であるステータスバーはアプリの向きに付着し
public override func shouldAutorotate() -> Bool {
if let vc = view.window?.rootViewController?.presentedViewController {
if NSStringFromClass(vc.classForCoder) == "AVFullScreenViewController" {
return true
}
}
return false
}
public override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
if let vc = view.window?.rootViewController?.presentedViewController {
if NSStringFromClass(vc.classForCoder) == "AVFullScreenViewController" {
return UIInterfaceOrientationMask.AllButUpsideDown
}
}
return UIInterfaceOrientationMask.Portrait
}
AVPlayerViewControllerを使用してフルスクリーンビデオを表示する場合を除いてのみ。
上記のコードはアプリ全体で大きく機能しています。私のコントローラとそのビューはすべて肖像画にとどまり、ユーザーがフルスクリーンのビデオを撮ると、問題なく風景に回転します。
私の問題は、ポートレートモードのステータスバーがオリエンテーションマスクを遵守しておらず、ランドスケープに回転していることですが、ステータスバーはランドスケープで隠されています。もう1つの奇妙なことは、アプリがランドスケープにあるときに、コントロール・センターと通知センターをアプリがランドスケープにあるかのように開いてスワイプできることです。
サポートされる最小iOSは9.0です。助言がありますか?
私の場合、なぜ関数パラメータである 'window'がnilであったのかわかりません。そこで、 'self.window'で' UIApplication'ウィンドウのプロパティにアクセスします –