旋转设备后 safeAreaLayoutGuide 未更新
Posted
技术标签:
【中文标题】旋转设备后 safeAreaLayoutGuide 未更新【英文标题】:safeAreaLayoutGuide not updated after rotating the device 【发布时间】: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 的缺口重叠。 【参考方案1】:听起来您误解了“顶部”的概念?
布局指南不会“随设备旋转”。当您旋转手机时,self.view.safeAreaLayoutGuide.topAnchor
不再是带有凹槽的边缘。
在这些图像中,青色标签的所有 4 个边缘(顶部/底部/前导/尾随)都被限制在视图的 safeAreaLayoutGuide
:
在这些图像中,只有 顶部 边缘被约束到视图的 safeAreaLayoutGuide
- 前导/尾随/底部被约束到视图各自的锚点:
【讨论】:
【参考方案2】:原来我找到了原因,很傻,我的队友写错了代码……
-(void)viewDidAppear:(BOOL)animated
[super viewDidDisappear:animated];
...
导致 safeAreaLayoutGuide 在旋转后不更新。
谢谢大家的回答。
【讨论】:
以上是关于旋转设备后 safeAreaLayoutGuide 未更新的主要内容,如果未能解决你的问题,请参考以下文章
NSLayoutConstraint 和 safeAreaLayoutGuide - 编码兼容 pre-iOS 11