我有一个视图控制器,从上到下占据整个屏幕 . 我想隐藏iPhone X设备屏幕底部的主条形指示器 .
我怎么能在iOS 11中这样做?
如果 window?.rootViewController 是 UITabBarController 或 UINavigationController ,只需继承它并添加两个函数,如下所示,
window?.rootViewController
UITabBarController
UINavigationController
override var prefersHomeIndicatorAutoHidden: Bool { return true } //@available(iOS 11, *) override var childViewControllerForHomeIndicatorAutoHidden: UIViewController? { return nil }
还有另一种选择 . 如果您正在寻找指示器变暗的行为,那么当用户向上滑动时它会激活,当它们再次向上滑动时,将调用主动作(IE,需要两次滑动才能调用),然后答案就在这里:iPhone X home indicator behavior . 缺点是覆盖你的UIViewController:
override func preferredScreenEdgesDeferringSystemGestures() -> UIRectEdge { return .bottom }
prefersHomeIndicatorAutoHidden 仅隐藏指示符,但不会抑制手势 .
prefersHomeIndicatorAutoHidden
而且你会得到你想要的东西(如果我理解你的评论正确 - 你的问题和选定的答案似乎暗示了另一个答案) .
override func prefersHomeIndicatorAutoHidden() -> Bool { return true }
我想您可以在AppDelegate中添加此方法,以便在所有ViewControllers上隐藏主页指示器 .
您应该在视图控制器中覆盖 prefersHomeIndicatorAutoHidden 以实现:
override var prefersHomeIndicatorAutoHidden: Bool { return true }
在 UIViewController 中实现 -(BOOL)prefersHomeIndicatorAutoHidden 并返回 YES .
UIViewController
-(BOOL)prefersHomeIndicatorAutoHidden
YES
阅读更多https://developer.apple.com/documentation/uikit/uiviewcontroller/2887510-prefershomeindicatorautohidden .
5 回答
如果
window?.rootViewController
是UITabBarController
或UINavigationController
,只需继承它并添加两个函数,如下所示,还有另一种选择 . 如果您正在寻找指示器变暗的行为,那么当用户向上滑动时它会激活,当它们再次向上滑动时,将调用主动作(IE,需要两次滑动才能调用),然后答案就在这里:iPhone X home indicator behavior . 缺点是覆盖你的UIViewController:
prefersHomeIndicatorAutoHidden
仅隐藏指示符,但不会抑制手势 .而且你会得到你想要的东西(如果我理解你的评论正确 - 你的问题和选定的答案似乎暗示了另一个答案) .
我想您可以在AppDelegate中添加此方法,以便在所有ViewControllers上隐藏主页指示器 .
您应该在视图控制器中覆盖
prefersHomeIndicatorAutoHidden
以实现:在
UIViewController
中实现-(BOOL)prefersHomeIndicatorAutoHidden
并返回YES
.阅读更多https://developer.apple.com/documentation/uikit/uiviewcontroller/2887510-prefershomeindicatorautohidden .