【问题标题】:Future-proof way to detect iPhones with a notch (like the iPhone X)检测带有缺口的 iPhone(如 iPhone X)的面向未来的方法
【发布时间】:2019-03-07 19:24:02
【问题描述】:

我有一个应用程序,我想在没有凹槽的 iPhone 上全屏显示(隐藏状态栏),但在有凹槽的 iPhone 上坚持安全区域(保持状态栏可见),例如iPhone X。

我不能只将我的应用程序限制在所有设备上的安全区域,因为安全区域包括没有缺口的 iPhone 上的状态栏。

我能想到的方法有:

  • Checking the device model,或
  • 查看主要 UIWindow 的安全区域插图并尝试从实际值中推断出一些东西(例如“如果顶部插图 > 22,则它有一个缺口”)

以上都不是很干净,不是面向未来的。

【问题讨论】:

  • 目前,只有根据状态栏高度和顶部插入面积进行计算,才能更准确地确定缺口。因为如果有一个缺口那么肯定,状态栏的高度会比正常的高。未来,苹果移除刘海以腾出更多空间的可能性更大。在这种情况下,状态栏高度肯定会恢复正常,因为没有理由让它变大。你说什么?
  • 您不太可能构建一个面向未来的版本。在它出现之前没有人预料到这个缺口。我们也不会期待下一个转折。您的系统将如何处理底部边缘的第二个凹口、不同形状的凹口或侧面的额外嵌入?根据我的经验,请尽可能遵循 Apple 的建议(例如,使用 Storyboards,它通常比自定义代码更容易自动适应)。在这种情况下,他们的建议很可能是“不要这样适应”。但请接受您必须为新设备更新 UI 和设计,以便尽可能简单。
  • (顺便说一句,当我说 Apple 的建议是“不要以这种方式适应”时,您可能会说“但 Apple 一直在违反这种建议。”答案是,“是的,他们这样做了。”至少当 iTunes 打破了关于窗框应该如何工作的所有规则时,一直在尖叫。是的。Apple 一直在打破他们的规则……)所有这一切,你的“顶部插图 > 22”可能是最好的答案不是因为它意味着有一个缺口,而是有足够的空间来提供信息(或者尽可能接近回答这个实际问题)。

标签: ios iphone iphone-x


【解决方案1】:

我无法找到任何“面向未来”的方法来做到这一点,所以我最终依靠安全区域插图。

一个重要的注意事项是,不应仅通过检查顶部插图来完成,因为顶部插图可能会有所不同,例如,当显示通话状态栏时.最好检查底部插图或底部顶部。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多