【问题标题】:View is tethered to the safe area margin top rather than superview, how would I tether to the superview top?视图被绑定到安全区域边缘顶部而不是超级视图,我将如何绑定到超级视图顶部?
【发布时间】:2018-08-23 00:56:54
【问题描述】:

我不知道为什么安全区域覆盖了我在 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,但仍然无法正常工作。

请帮忙!!!!

【问题讨论】:

  • ClipsToBounds? Layer.masksToBounds?
  • 一个可能的问题是您的导航栏不透明。你能尝试让它透明吗:stackoverflow.com/a/25846056/3883492.
  • 控制器不是嵌入了什么东西吗?
  • 所以在运行应用程序时,您会在顶部和底部获得空格?
  • @Scriptable 是的,但它不应该在那里大声笑

标签: ios swift constraints iphone-x safearealayoutguide


【解决方案1】:

您可以从情节提要中为特定视图控制器禁用安全区域布局指南。

选择视图控制器 -> 文件检查器(第一个选项卡)-> 使用安全区域布局指南(取消选中复选框)。

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

view.insetsLayoutMarginsFromSafeArea = false

希望对您有所帮助!

【讨论】:

  • 您是否尝试过通过情节提要而不是通过编程方式进行约束?你能告诉我情节提要的视图控制器中是否有任何 safeAreaInset 对象?如果是这样,请尝试删除它。
【解决方案2】:
  1. 在情节提要中,选择 root 视图。

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

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

【讨论】:

    【解决方案3】:

    如果有人在 UIViewRepresentableUIViewControllerRepresentable 中使用 UIKitSwiftUI 时遇到此问题,请尝试将此修饰符添加到视图中:

    .ignoresSafeArea(.all)

    伪代码示例:

    UIViewRepresentableView()
      .ignoresSafeArea(.all)
    

    【讨论】:

      【解决方案4】:

      如果您想创建您自己的视图没有安全区域(Google 向我发送了我的问题:“如何在没有安全区域的情况下创建视图 "),我找到了下一个简单的解决方案:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            【解决方案7】:

            事实上,我的 NavigationController 中嵌入了另一个 viewController 的视图,该 viewController 的视图没有针对 iPhone X 进行优化,优化后一切正常。

            谢谢大家!

            【讨论】:

            • 你是怎么解决这个问题的?
            【解决方案8】:

            一定要设置 modalPresentationStyle = .fullScreen 对于正在呈现的 VC -> 然后可能会遵循其他答案来连接到超级视图而不是安全区域

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2020-11-27
              • 2023-04-08
              • 1970-01-01
              • 2015-04-30
              • 1970-01-01
              • 1970-01-01
              • 2021-01-25
              相关资源
              最近更新 更多