swift - 如何获取直到标签栏底部的屏幕尺寸
问题描述
我正在处理自定义标签栏按钮的东西,想知道如何使用视图的高度或以编程方式向上移动按钮。
我有这个加号按钮,我想从底部向上移动 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。
我想从标签栏底部向上移动按钮,那么我怎样才能将屏幕的高度直到标签栏的底部,这在有/没有主缺口的情况下都适用?
解决方案
尽管@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)
])
推荐阅读
- azure-ad-b2c-custom-policy - Azure Ad b2c custompolicy starter pack 本地登录
- python - 绘制纬度经度并在行中删除错误数据
- php - 根据 ajax 在 Codeigniter 中选择的主选项显示子选项
- facebook - facebook messenger m.me 分享链接
- c++ - 十进制字符到字符串转换
- r - 计数两行数据帧R之间的匹配
- node.js - JWT 过期,nodejs API 中的意外响应
- modelica - 在 Dymola 中使用多模 DAE 的错误
- c# - 使用 XSD 文件在 C# 中解析 XML
- python - 如何将数据反转为原始数据值以获得准确的 MSE 值?