画面全体を上から下に表示するView Controllerがあります。 iPhone Xデバイスの画面下部にあるホームバーインジケーターを非表示にしたいと思います。
IOS 11でこれを行うにはどうすればよいですか?
それを実現するには、View ControllerでprefersHomeIndicatorAutoHidden
をオーバーライドする必要があります。
override var prefersHomeIndicatorAutoHidden: Bool {
return true
}
別の方法があります。インジケーターが暗くなる動作を探している場合、ユーザーが上にスワイプするとアクティブになり、再びスワイプするとホームアクションが呼び出されます(つまり、呼び出すには2回のスワイプが必要です)- iPhone Xホームインジケーターの動作 。要するに、UIViewControllerでオーバーライドすることです。
override func preferredScreenEdgesDeferringSystemGestures() -> UIRectEdge {
return .bottom
}
prefersHomeIndicatorAutoHidden
はインジケーターのみを非表示にしますが、ジェスチャーは抑制しません。
そして、あなたはあなたが望むものを手に入れるでしょう(私があなたのコメントを正しく理解していれば-あなたの質問と選択された答えは他の答えを暗示しているようです)。
window?.rootViewController
がUITabBarController
またはUINavigationController
である場合、それを継承し、次のように2つの関数を追加します。
override var prefersHomeIndicatorAutoHidden: Bool {
return true
}
//@available(iOS 11, *)
override var childViewControllerForHomeIndicatorAutoHidden: UIViewController? {
return nil
}
UIViewController
に-(BOOL)prefersHomeIndicatorAutoHidden
を実装し、YES
を返します。