【发布时间】: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”可能是最好的答案不是因为它意味着有一个缺口,而是有足够的空间来提供信息(或者尽可能接近回答这个实际问题)。