web-dev-qa-db-ja.com

iPhone XはView Controllerのホームインジケータを非表示にします

画面全体を上から下に表示するView Controllerがあります。 iPhone Xデバイスの画面下部にあるホームバーインジケーターを非表示にしたいと思います。

IOS 11でこれを行うにはどうすればよいですか?

33
Vlad

それを実現するには、View ControllerでprefersHomeIndicatorAutoHiddenをオーバーライドする必要があります。

override var prefersHomeIndicatorAutoHidden: Bool {
    return true
}
45
Tamás Sengel

別の方法があります。インジケーターが暗くなる動作を探している場合、ユーザーが上にスワイプするとアクティブになり、再びスワイプするとホームアクションが呼び出されます(つまり、呼び出すには2回のスワイプが必要です)- iPhone Xホームインジケーターの動作 。要するに、UIViewControllerでオーバーライドすることです。

override func preferredScreenEdgesDeferringSystemGestures() -> UIRectEdge {
  return .bottom
}

prefersHomeIndicatorAutoHiddenはインジケーターのみを非表示にしますが、ジェスチャーは抑制しません。

そして、あなたはあなたが望むものを手に入れるでしょう(私があなたのコメントを正しく理解していれば-あなたの質問と選択された答えは他の答えを暗示しているようです)。

15
absmiths

window?.rootViewControllerUITabBarControllerまたはUINavigationControllerである場合、それを継承し、次のように2つの関数を追加します。

override var prefersHomeIndicatorAutoHidden: Bool {
    return true
}

//@available(iOS 11, *)
override var childViewControllerForHomeIndicatorAutoHidden: UIViewController? {
    return nil
}
4
DawnSong

UIViewController-(BOOL)prefersHomeIndicatorAutoHiddenを実装し、YESを返します。

続きを読む https://developer.Apple.com/documentation/uikit/uiviewcontroller/2887510-prefershomeindicatorautohidden

2
DrMickeyLauer
override func  prefersHomeIndicatorAutoHidden() -> Bool {
    return true
}

すべてのViewControllerでホームインジケーターを非表示にするために、このメソッドをAppDelegateに追加できると思います。

enter image description here

1
pierreafranck