safeAreaLayoutGuide在旋转设备后未更新

问题描述 投票:0回答:2

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

我在代码中添加了safeAreaLayoutGuide,如下所示:

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

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

ios objective-c autolayout screen-rotation safearealayoutguide
2个回答
0
投票

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

布局指南不会“随设备一起旋转。”旋转手机时,self.view.safeAreaLayoutGuide.topAnchor不再是带有切口的边缘。

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

enter image description here

enter image description here

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

enter image description here

enter image description here


0
投票

原来我发现了原因,这很愚蠢,我的队友写错了代码...

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

旋转后不会更新safeAreaLayoutGuide。

谢谢大家的回答。

© www.soinside.com 2019 - 2024. All rights reserved.