首页 > 解决方案 > 如何获取直到标签栏底部的屏幕尺寸

问题描述

我正在处理自定义标签栏按钮的东西,想知道如何使用视图的高度或以编程方式向上移动按钮。

在此处输入图像描述

我有这个加号按钮,我想从底部向上移动 10pt。

let newButton = UIButton(frame: CGRect(x: 0, y: 0, width: 65, height: 65))
newButton.imageView?.contentMode = .scaleAspectFit
newButton.contentHorizontalAlignment = .fill
newButton.contentVerticalAlignment = .fill
      
var newButtonFrame = newEventButton.frame
newButtonFrame.origin.y = view.bounds.height - 65 - 10

因此,当 iPhone 没有主页按钮槽口时,上面的代码有效。就像获取视图的高度并减去按钮高度和 10。

但是,很明显,当有一个缺口时,它就会变成下图的样子。 在此处输入图像描述

我想从标签栏底部向上移动按钮,那么我怎样才能将屏幕的高度直到标签栏的底部,这在有/没有主缺口的情况下都适用?

标签: swiftxcodebuttontabbar

解决方案


尽管@wonder 的回答完全正确,但仍然存在一些缺陷。

首先,您不应该使用框架来确定这样的视图布局。

其次,无需为此进入窗口的 UIApplication 单例。因为它位于父母视图中。在safeAreaInsets或中safeAreaLayoutGuide

布局指南适用于锚点,它比框架更具可持续性。

这里有它的外观示例代码:

let newButton = UIButton()
newButton.imageView?.contentMode = .scaleAspectFit
newButton.contentHorizontalAlignment = .fill
newButton.contentVerticalAlignment = .fill
NSLayoutConstraint.activate([
    newButton.heightAnchor.constraint(equalTo: 65),
    newButton.widthAnchor.constraint(equalTo: 65),
    newButton.centerXAnchor.constraint(equalTo: view.centerXAnchor),
    newButton.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -10)
])


推荐阅读