4

新的 iPhone X 已经摆脱了主页按钮,取而代之的是底部的“主页指示器”,允许用户向上滑动以返回主屏幕。

我的问题是,我们如何检测这个主页指示器是否在屏幕上?我想做类似的事情:

if (!notfullScreen)
{
    if (swipeBarExists)
    {
        viewHeight -= swipeBarHeight;
    }
}

我检查[UIApplication sharedApplication]并没有发现任何东西。基本上我真的不知道该怎么称呼这个东西并且很难找到答案。

4

1 回答 1

14

您可以使用safeAreaInsets.bottom, defined forUIView来获得应该插入内容的空间量,以确保它不会与主页指示器(或其他元素)重叠。请注意,此值可能会发生变化,例如,当您在 iPhone 上旋转到横向时,它会缩小。要在发生这种情况时得到通知,safeAreaInsetsDidChange请在您的视图控制器中实现。您还可以使用safeAreaLayoutGuide自动布局。

所以,如果你有一个全屏视图,你可以像这样检查:

override func viewSafeAreaInsetsDidChange() {
    super.viewSafeAreaInsetsDidChange()

    if view.safeAreaInsets.bottom > 0 {
        //home indicator
    } else {
       //no home indicator
    }
}

请注意,没有 API 可以仅获取主页指示器栏本身的高度。

于 2017-09-18T01:27:30.290 回答