如何只为 iPhone X 在顶部添加额外的高度?

Posted

技术标签:

【中文标题】如何只为 iPhone X 在顶部添加额外的高度?【英文标题】:How to add extra height on top only for iPhone X? 【发布时间】:2018-10-28 20:04:15 【问题描述】:

我有一个按钮,它一直到屏幕顶部的状态栏下方。按钮的中心是一个“+”号。这在除 iPhone X 之外的所有 iPhone 上看起来都不错。对于 iPhone X,按钮应该更高,因为“+”太靠近凹槽。有没有办法在情节提要中做到这一点?

【问题讨论】:

单独使用 iPhone x 时调整顶部约束以添加按钮' 【参考方案1】:

正确的做法是使用安全区域限制。你可以阅读更多关于他们的信息here。 在 IB 中设置顶部安全区域约束后,它将自动适当地调整按钮(基于设备)。

现在,如果您真的想检测应用程序是否在 iPhone X 上运行,您可以使用一个 hack。但是,要小心,因为这绝对不是正确的解决方案,你应该避免它

if let mainWindow = UIApplication.shared.delegate?.window, (mainWindow?.safeAreaInsets.top ?? 0) > 0.0 
    // Iphone X

编辑

我使用安全区域约束的意思是,您可以创建一个虚拟 UIView 作为占位符来正确放置按钮。我所做的是,我创建了一个视图并设置了以下约束:顶部安全区域、前导、尾随和高度。然后我可以将按钮垂直居中在整个区域(第一张图片)或仅在状态栏下方的区域中。

【讨论】:

这并不能解决这个问题,使用安全区域。安全区域意味着我的按钮完全位于凹槽下方。我希望它一直位于凹槽下方,以便按钮背景位于设备屏幕的顶部。由于槽口尺寸增加,它应该更大。 @JorisMans,我已经编辑了问题并添加了两个示例。一切都在 IB 中完成。提供的两个示例中的高度都增加了(在 iPhone X 上),唯一的区别是按钮的垂直对齐方式。 “您可以创建一个虚拟 UIView 作为占位符以正确放置按钮。”。对我来说仍然没有意义。我希望在界面构建器中使用 1 个配置,让按钮看起来像任何“普通”iPhone 上的第一张图片和 iPhone X 上的第二张图片。我了解如何在 IB 中手动执行此操作,但我想做一个配置这将适用于两种设备。对于安全区域的固定设置,它将是您的前 2 张图像或您的最后 2 张图像,但绝不是它们之间的混合。

以上是关于如何只为 iPhone X 在顶部添加额外的高度?的主要内容,如果未能解决你的问题,请参考以下文章

iPhone X上的额外底部空间/填充?

Xamarin 形式的 iPhone X 中的额外底部和顶部空间

如何删除这些讨厌的额外空间

PWA 中的额外边距 - 无法拉伸整个高度

IPhone X 本地化产品适配模板Sketch

如何在 iPhone X 上获取 tabBar 的高度