UIToolbar中的按钮可覆盖iPhone X Home指示器下方的完整高度

时间:2019-05-17 09:05:56

标签: ios uitoolbar ios-autolayout iphone-x safearealayoutguide

我在屏幕底部有一个UIToolbar,其中包含三个按钮,每个按钮都有不同的背景颜色。我使用“自动布局”,并将工具栏限制在底部的布局指南中(我必须支持iOS 8,因此没有“安全区域布局指南”),以便工具栏正确显示在iPhone X Home Indicator上方。

我的问题是我希望按钮能够覆盖工具栏的整个高度并在“主页指示器”下方绘制。我目前有这个:

Current

请注意“主页”指示器下方的空白。

我希望按钮背景色可以覆盖该空间(标签当然必须保持在“主页指示器”上方)

Ideal

我必须一直支持设备,直到 iOS 8 ,横向和纵向模式。

编辑:

当我将工具栏限制在超级视图的底部时,它的位置太低了,并且按钮被Home指示器覆盖了:

Aligned to bottom

3 个答案:

答案 0 :(得分:1)

如果您使用的是自动布局,则需要将底部约束添加到非安全区域的超级视图中,否则它将起作用。

如果您使用的是镜架,则可以稍微调整一下高度以获得所需的结果。

编辑:

如果您想支持iOS 11以下的设备,则可以使用以下技巧检查设备类型并相应地指定标签栏的高度,但是您必须在代码中给出约束。

if #available(iOS 11.0, *) {
    if UIApplication.shared.windows[0].safeAreaInsets.bottom > 0{
        //The device is a notch device and you need to give extra height to accommodate the bottom button and tab (Make sure your labels are attached to the top so they are properly placed over the bottom line)
    }else{
        //The device is not a notch device and is iPhone 8 or less so you can have regular tab bar height
    }
} else {
    //You probably do not have to worry about increased tab bar height and you can give regular tab bar height
}

这可能不是最佳解决方案,但您现在可以解决当前的问题。 希望对您有帮助

答案 1 :(得分:0)

您必须通过为每个按钮设置“高度约束”并根据设备状况增加/减少约束来发挥作用。

答案 2 :(得分:0)

我认为这对您有用。

  1. 您需要将工具栏按钮约束设置为安全区域。
  2. 然后,您需要另一个视图,其中只包含三个彩色视图,没有任何文本。并为此视图设置以下约束。 ->工具栏的垂直空间限制 ->导视的前导,尾部和底部约束。

因此,在Nouch设备中,此虚拟视图会展开,而在其他设备中,其高度会自动变为零。

不需要设备特定的编码。