iPhone X home 指标行为

iPhone X home indicator behavior

我试图在 iPhone X 上模拟主页指示器的行为,但不知道如何操作。在某些应用程序中,主页指示灯会变暗,您必须滑动它才能激活正常行为。我在控制器中找到了一个隐藏指示器的选项,但这不是我要找的。例如,在 Clash Royale 和 Clash of Clans 中,主页指示灯会变暗,然后当您向上滑动时,指示灯会变亮,如果您再次向上滑动,它会激活 'home'。使用 API 隐藏指标我发现真的只会让它表现得很奇怪。

这是我正在使用的 API,但它不像我在其他应用程序中看到的那样有效。启用自动隐藏后,指示器将消失,直到您滑动并立即调用主页操作。这不好,因为目的是防止无意中滑动到主屏幕:

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

我更喜欢的行为是指示器变暗,然后在您向上滑动(但不去主页)时激活(变亮),然后如果您再次向上滑动以触发主页。这种行为在 Supercell 应用程序中是不变的,但它可能不是内置行为。

为了看出区别,您可以查看其中一个 Supercell 应用程序(在 iPhone X 上),并查看仅设置了 属性 的应用程序。

我进一步研究了这个问题,终于在这篇文章中找到了答案:iPhone X: Dealing with Home Indicator

这里强调(我将 .top 更改为 .bottom,因为这是主页指示器所在的位置):

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

这样做是推迟主页操作,直到用户执行一次手势以激活主页控件,然后再执行一次以调用主页。既然我已经找到了这个,我(具有讽刺意味的是)可能不会使用它。我可能会在底部留下足够的额外空间。我的问题不在于手势,而是指示器覆盖了我的内容(可能需要 UI 更新,但我现在没有时间)。

希望其他人会发现这很有用,因为这种行为很酷但很难发现。