为什么故事板安全区域在iPhone X上无法正常工作?

时间:2017-11-28 00:58:05

标签: xcode iphone-x safearealayoutguide

我正在尝试为新的iPhone X更新我的应用程序。在阅读了安全区域功能和复选框"安全区域相对边距"在每个UIObject"尺寸检查员" (标尺标签),我没想到这会太糟糕了。但是,这个功能对我来说似乎不起作用。

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

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

发生了什么:

Safe area relative margins not working

所需行为(来自https://arstechnica.com/gadgets/2017/11/how-devs-updated-their-apps-for-the-iphone-xs-screen-and-the-notch/): Desired behavior Constraints

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我也为此浪费了时间。虽然我不能回答您的问题,为什么Xcode中会破坏它,但我可以提供解决方案。

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

设置情节提要:

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

修复每个ViewController:

  1. 选择顶级视图下的所有视图。
  2. 点击编辑器|嵌入|查看无插图。这样会创建一个新视图,并将所有视图放入其中。
  3. 通过添加安全区域约束(通过将新视图按住Control并将其拖动到顶层视图),使此新视图扩展到安全区域。
    • 通往安全区域的空间
    • 安全区域的顶部空间
    • 将空间拖到安全区域
    • 底部空间到安全区域
  4. 如果您没有选择使用上面的安全区域情节提要,则可以使用“顶部布局指南”,“底部布局指南”以及顶层视图的左侧/右侧来创建四个等效约束。不过,这可能无法在景观中使用。而且我没有对此进行测试。
  5. 将新视图设置为透明。
  6. 给新视图命名为“ SafeAreaView”。