【问题标题】:safeAreaLayoutGuide not updated after rotating the device旋转设备后 safeAreaLayoutGuide 未更新
【发布时间】:2020-09-24 07:12:17
【问题描述】:

我展示了一个 UIViewController out,它使用自动布局来设置视图控制器视图内子视图的约束。所有的约束都保存在代码中,没有 故事板或 xib。

我在代码里面加上safeAreaLayoutGuide,如下:

NSLayoutConstraint *const containerViewTopConstraint = [self.containerView.topAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.topAnchor];

问题是在我从纵向旋转到横向之后,view.safeAreaLayoutGuide 没有得到更新。这仍然是肖像中的旧 safeAreaLayoutGuide。想知道我是否错过了什么? 谢谢!

【问题讨论】:

  • 您需要提供更多信息。你能用一个子视图来展示这个吗?您能否以屏幕截图显示您未预料到的情况?
  • @DonMag,感谢您的回复,没想到的是当我旋转到横向时,它会在顶部添加额外的边距,但左右两侧没有边距,然后是我的看法将与 iphone X 的缺口重叠。

标签: ios objective-c autolayout screen-rotation safearealayoutguide


【解决方案1】:

听起来您误解了“顶部”的概念?

布局指南不会“随设备旋转”。当您旋转手机时,self.view.safeAreaLayoutGuide.topAnchor 不再是带有凹槽的边缘。

在这些图像中,青色标签的所有 4 个边缘(顶部/底部/前导/尾随)都被限制在视图的 safeAreaLayoutGuide

在这些图像中,只有 顶部 边缘被约束到视图的 safeAreaLayoutGuide - 前导/尾随/底部被约束到视图各自的锚点:

【讨论】:

    【解决方案2】:

    原来我找到了原因,很傻,我的队友写错了代码……

    -(void)viewDidAppear:(BOOL)animated {
        [super viewDidDisappear:animated];
        ...
    }
    

    导致 safeAreaLayoutGuide 在旋转后不更新。

    谢谢大家的回答。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多