【问题标题】:Have button in UIToolbar cover full height below iPhone X Home Indicator让 UIToolbar 中的按钮覆盖 iPhone X 主页指示器下方的全高
【发布时间】:2019-10-04 14:10:28
【问题描述】:

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

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

注意主页指示器下方的空白区域。

我希望该空间被按钮背景颜色覆盖(标签,当然,必须保持在主页指示器上方):

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

编辑:

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

【问题讨论】:

  • 您可能可以使用与此处相同的方法:stackoverflow.com/a/56171264/6257435
  • 是的,这行得通,谢谢!如果您将链接发布为答案,我会接受(我不能将其标记为重复)。
  • 您使用的是实际的UIToolBar 吗?还是只需要视图底部的 3 个按钮?
  • 我使用的是实际的UIToolbar。我能够通过使用普通的UIViews 找到解决方法,但理想情况下我想使用 UIToolbar。

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


【解决方案1】:

如果您使用自动布局,则需要将底部约束添加到超级视图不安全区域,然后它应该可以工作。

如果您使用框架,那么您可能可以稍微调整高度以获得所需的结果。

编辑:

如果你想支持 iOS 11 以下的设备,你可能可以使用下面的 hack 来检查设备类型并相应地给出标签栏高度,但你必须在代码中给出约束。

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
}

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

【讨论】:

  • 感谢您的建议。如果我限制到 superview.bottom,主页指示器位于按钮上方。我认为限制在底部布局指南(iOS 8 中没有安全区域)是正确的方法。我只需要弄清楚如何展开按钮。
  • @Mark 我已经更新了我的答案。你可以试试看它是否适合你
  • 感谢您的更新。重新“设备是一个缺口设备,你需要给额外的高度”:UIToolbar的高度由系统管理。我想找到一种方法让工具栏项垂直延伸到工具栏的整个高度。
【解决方案2】:

您必须通过为每个按钮设置高度约束并根据设备条件增加/减少来处理约束。

【讨论】:

  • 感谢您的回答。按钮的高度已经被限制为等于工具栏的高度。问题是工具栏有一个包含按钮的内容视图,它从主页指示器上方开始。内容视图小于实际工具栏(位于主页指示器下方)。
  • @Mark 为此,您必须使用 SuperView 将约束设置为底部而不是安全区域。
【解决方案3】:

我认为这对你有用。

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

因此,在 Nouch 设备中,这个虚拟视图会展开,而在其他设备中,它的高度会自动归零。

无需设备特定编码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多