iPhone X 在视图控制器上隐藏主页指示器
iPhone X hide home indicator on view controller
我有一个视图控制器,它从上到下占据了整个屏幕。我想在 iPhone X 设备上隐藏屏幕底部的主页栏指示器。
如何在 iOS 11 中执行此操作?
您应该在您的视图控制器中覆盖 prefersHomeIndicatorAutoHidden
来实现:
override var prefersHomeIndicatorAutoHidden: Bool {
return true
}
在您的 UIViewController
和 return YES
中实施 -(BOOL)prefersHomeIndicatorAutoHidden
。
override func prefersHomeIndicatorAutoHidden() -> Bool {
return true
}
我想你可以在你的 AppDelegate 中添加这个方法来隐藏所有 ViewControllers 上的主页指示器。
还有另一种选择。如果您正在寻找指示器变暗的行为,那么当用户向上滑动时它会激活,当他们再次向上滑动时会调用主页操作(即,需要两次滑动才能调用),那么答案就在这里:。简而言之就是覆盖你的 UIViewController:
override var preferredScreenEdgesDeferringSystemGestures: UIRectEdge {
return UIRectEdge.bottom
}
prefersHomeIndicatorAutoHidden
只隐藏指示器,不会抑制手势
你会得到你想要的(如果我正确理解你的评论 - 你的问题和选择的答案似乎暗示了另一个答案)。
如果你的window?.rootViewController
是UITabBarController
或UINavigationController
,直接继承它,添加两个函数如下,
override var prefersHomeIndicatorAutoHidden: Bool {
return true
}
//@available(iOS 11, *)
override var childViewControllerForHomeIndicatorAutoHidden: UIViewController? {
return nil
}
我尝试将其设置为 return 只有当我处于全屏模式时才为真 :
override var prefersHomeIndicatorAutoHidden: Bool { isNavigationBarAndTabBarHidden }
但它似乎不起作用...isNavigationBarAndTabBarHidden 是与我的全屏扩展相关的自定义变量。
编辑:我们需要在每次更新 prefersHomeIndicatorAutoHidden 的值时调用 setNeedsUpdateOfHomeIndicatorAutoHidden。
var isNavigationBarAndTabBarHidden = false {
didSet {
setNeedsUpdateOfHomeIndicatorAutoHidden()
}
}
我有一个视图控制器,它从上到下占据了整个屏幕。我想在 iPhone X 设备上隐藏屏幕底部的主页栏指示器。
如何在 iOS 11 中执行此操作?
您应该在您的视图控制器中覆盖 prefersHomeIndicatorAutoHidden
来实现:
override var prefersHomeIndicatorAutoHidden: Bool {
return true
}
在您的 UIViewController
和 return YES
中实施 -(BOOL)prefersHomeIndicatorAutoHidden
。
override func prefersHomeIndicatorAutoHidden() -> Bool {
return true
}
我想你可以在你的 AppDelegate 中添加这个方法来隐藏所有 ViewControllers 上的主页指示器。
还有另一种选择。如果您正在寻找指示器变暗的行为,那么当用户向上滑动时它会激活,当他们再次向上滑动时会调用主页操作(即,需要两次滑动才能调用),那么答案就在这里:
override var preferredScreenEdgesDeferringSystemGestures: UIRectEdge {
return UIRectEdge.bottom
}
prefersHomeIndicatorAutoHidden
只隐藏指示器,不会抑制手势
你会得到你想要的(如果我正确理解你的评论 - 你的问题和选择的答案似乎暗示了另一个答案)。
如果你的window?.rootViewController
是UITabBarController
或UINavigationController
,直接继承它,添加两个函数如下,
override var prefersHomeIndicatorAutoHidden: Bool {
return true
}
//@available(iOS 11, *)
override var childViewControllerForHomeIndicatorAutoHidden: UIViewController? {
return nil
}
我尝试将其设置为 return 只有当我处于全屏模式时才为真 :
override var prefersHomeIndicatorAutoHidden: Bool { isNavigationBarAndTabBarHidden }
但它似乎不起作用...isNavigationBarAndTabBarHidden 是与我的全屏扩展相关的自定义变量。
编辑:我们需要在每次更新 prefersHomeIndicatorAutoHidden 的值时调用 setNeedsUpdateOfHomeIndicatorAutoHidden。
var isNavigationBarAndTabBarHidden = false {
didSet {
setNeedsUpdateOfHomeIndicatorAutoHidden()
}
}