iPhone X隐藏视图控制器上的家庭指示器

Vla*_*lad 35 uiviewcontroller uikit ios ios11 iphone-x

我有一个视图控制器,从上到下占据整个屏幕.我想在iPhone X设备上隐藏屏幕底部的主页条指示器.

我怎么能在iOS 11中这样做?

Tam*_*gel 47

您应该prefersHomeIndicatorAutoHidden在视图控制器中覆盖以实现:

override var prefersHomeIndicatorAutoHidden: Bool {
    return true
}
Run Code Online (Sandbox Code Playgroud)

  • "你实际上必须滑动两次以激活手势." 这不是真的.如果覆盖`preferredScreenEdgesDeferringSystemGestures`,则必须滑动两次,而不是覆盖`prefersHomeIndicatorAutoHidden`. (3认同)
  • 但是这个幻灯片两次没有用,我正在模拟器中测试.即使它隐藏起来,也只能在主屏幕上轻扫. (2认同)

abs*_*ths 15

还有另一种选择.如果您正在寻找指示器变暗的行为,那么当用户向上滑动时它会激活,当它们再次向上滑动时,将调用主动作(IE,需要两次滑动才能调用),然后答案就在这里: iPhone X家庭指标行为.它的缺点是覆盖你的UIViewController:

override func preferredScreenEdgesDeferringSystemGestures() -> UIRectEdge {
  return .bottom
}
Run Code Online (Sandbox Code Playgroud)

prefersHomeIndicatorAutoHidden 只隐藏指标,但不会抑制手势.

你会得到你想要的东西(如果我理解你的评论正确 - 你的问题和选定的答案似乎暗示了另一个答案).


Daw*_*ong 5

如果您window?.rootViewControllerUITabBarControlleror UINavigationController,只需继承它并添加以下两个函数,

override var prefersHomeIndicatorAutoHidden: Bool {
    return true
}

//@available(iOS 11, *)
override var childViewControllerForHomeIndicatorAutoHidden: UIViewController? {
    return nil
}
Run Code Online (Sandbox Code Playgroud)