如何获取直到标签栏底部的屏幕尺寸
Posted
技术标签:
【中文标题】如何获取直到标签栏底部的屏幕尺寸【英文标题】:how to get the screen size until the bottom of the tabbar 【发布时间】:2021-12-16 17:45:57 【问题描述】:我正在处理自定义标签栏按钮的东西,想知道如何使用视图的高度或以编程方式向上移动按钮。
我有这个加号按钮,我想从底部向上移动 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 没有 Home 键槽口的情况下有效。比如获取视图的高度并减去按钮高度和 10。
但是,很明显,当有一个缺口时,它就会变成如下图所示的样子。
我想将按钮从标签栏底部向上移动,那么我怎样才能将屏幕的高度直到标签栏底部,这在有/没有 Home Notch 的情况下都适用?
【问题讨论】:
您在寻找 safeAreaEdges 吗? 【参考方案1】:虽然@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)
])
【讨论】:
感谢沃兰。是的,@wonder 的答案是正确的,但我更喜欢你的代码。我想知道(因为它类似于我的原始代码),但我在我的项目中添加了您的代码。两者都有效!谢谢! 别担心,祝你的项目好运:)【参考方案2】:对于按钮来源使用安全是插入,ıf 设备有缺口 safeAreaBottom 将像 44 ,如果没有它将是 0:
let safeAreaBottom = UIApplication.shared.windows.first?.safeAreaInsets.bottom
然后使用它:
newButtonFrame.origin.y = view.bounds.height - safeAreaBottom - 65 - 10
【讨论】:
以上是关于如何获取直到标签栏底部的屏幕尺寸的主要内容,如果未能解决你的问题,请参考以下文章