安全区域覆盖了该视图,无法移除

时间:2018-03-14 13:12:57

标签: ios swift constraints iphone-x safearealayoutguide

我不知道为什么安全区域覆盖了我在iPhone X,模拟器上的视图,但在xCode的视图中调试似乎没问题。有没有选项隐藏安全区域视图或删除它?提前致谢! 通过视图调试我可以看到没有视图或没有任何覆盖我的视图,它没事,真的很奇怪。

我在故事板中添加了myView,打开了安全区域布局指南。 我尝试将additionalSafeAreaInsets.top additionalSafeAreaInsets.bottom设置为零,但它不起作用。

以下是我如何做约束:

func setupGroupBView() {
    self.groupBView = myView.create()
    self.view.addSubview(groupBView) 
    self.groupBView.snp.makeConstraints({ (make) in
        make.width.centerX.centerY.equalTo(self.view)
        make.height.equalTo(screenHeight)
    }) 
}

我尝试将myView的顶部,底部设置为控制器的view.top view.bottom到-44,-34但仍然不起作用。

please check this picture that shows the reality!

请帮助!!!!

7 个答案:

答案 0 :(得分:6)

  1. 在情节提要中,选择 root 视图。

enter image description here

  1. 大小检查器面板中,取消选中Safe Area Layout Guide

enter image description here

  1. 添加新矛盾面板上,将所有边距设置为0,然后取消选中Constrain to margins 请不要忘记单击底部的Add xx Constraints按钮。

enter image description here

答案 1 :(得分:2)

如果您要创建您自己的视图没有safeArea (Google在这里向我提出了我的问题:“ 如何在没有安全区域的情况下创建视图 ”),我找到了下一个简单的解决方案: uncheck Safe Area

也许有人带着同样的问题来到这里。

答案 2 :(得分:1)

您可以从故事板中为特定视图控制器禁用安全区域布局指南。

选择View Controller - >文件检查器(第一个标签) - >使用安全区域布局指南(取消选中该复选框)。

您也可以在viewDidLoad()中以编程方式更改它。

view.insetsLayoutMarginsFromSafeArea = false

希望这有帮助!

答案 3 :(得分:0)

我认为你正在使用SnapKit。 你可以尝试:

groupBView.snp.makeConstraints { make in
    make.edges.equalToSuperview()
}

你的代码中不需要self(除非你在一个区块内)。

答案 4 :(得分:0)

事实是我有另一个viewController的视图嵌入我的NavigationController,viewController的视图没有针对iPhone X进行优化,经过优化后,一切都做得很好。

谢谢大家!

答案 5 :(得分:0)

我相信您也可以从情节提要中更改它。只需选择视图顶部约束,然后将其与超级视图相关联即可。像那样 : enter image description here

答案 6 :(得分:0)

如果使用情节提要,但只想针对特定视图禁用安全区域指南,则可以通过禁用“安全区域布局指南”复选框在右侧的“大小检查器”选项卡中进行操作。