2

我正在尝试为新的 iPhone X 更新我的应用程序。在阅读了每个 UIObject 的“尺寸检查器”(标尺选项卡)中的安全区域功能和复选框“安全区域相对边距”之后,我认为这不会太糟糕了。但是,该功能似乎对我不起作用。

普通 iPhone 没有任何变化,这很好,但是对于 X,我的应用程序的顶部与手机的顶部插图重叠三分之一。有什么已知的方法可以解决这个*或我缺少的东西吗?

*通过解决这个问题,我的意思是让我的对象从露头下方开始,就像第二张图片一样。

怎么了:

安全区域相对边距不起作用

期望的行为(来自https://arstechnica.com/gadgets/2017/11/how-devs-updated-their-apps-for-the-iphone-xs-screen-and-the-notch/): 期望的行为 约束

4

3 回答 3

2

我也为此浪费了几个小时。虽然我无法回答您关于 Xcode 中为什么会出现这种情况的问题,但我可以提供一个解决方案。

但首先让我注意的是,在 Xcode 11.3.1 中,我在从头开始创建的新项目中遇到了同样的问题。

设置你的故事板:

  1. 在情节提要上,选择“使用安全区域布局指南”。这将为您的每个 ViewController 添加一个安全区域。它还要求您以 iOS9+ 为目标。不过,您也许可以跳过此步骤(请参阅下面的第 4 步)。
  2. 以 iPhone 4s 的形式查看您的故事板。

修复每个 ViewController:

  1. 选择顶层视图下的所有视图。
  2. 单击编辑器 | 嵌入 | 查看无插图。这将创建一个新视图并将所有视图放入其中。
  3. 通过添加安全区域约束(通过控制拖动新视图到顶层视图)使这个新视图扩展到安全区域。
    • 通往安全区域的领先空间
    • 安全区域的顶部空间
    • 到安全区域的尾随空间
    • 底部空间到安全区域
  4. 如果您没有选择使用上面的安全区域情节提要,则可以使用顶部布局指南、底部布局指南和顶层视图的左侧/右侧创建四个等效约束。不过,这可能不适用于横向。我没有对此进行测试。
  5. 将您的新视图设置为透明。
  6. 为您的新视图命名,例如“SafeAreaView”。
于 2020-04-18T07:18:04.333 回答
1

在 iOS 11 中,边距是从安全区域插入的。因此,您的 0 上边距变为 20 上边距 - 解释您的屏幕截图。如果这不是您想要的,请将视图的insetsLayoutMarginsFromSafeArea属性设置为false.

于 2017-11-28T15:52:00.227 回答
0

在我的情况下 modalPresentationStyle = .fullScreen 必须设置为正在呈现的视图控制器

于 2021-09-09T09:01:40.617 回答