当子视图不在视图区域中时,安全区域在iPhone X上无法正常工作

Pow*_*wHu 13 xcode ios autolayout iphone-x

我有一个scrollView包含2个子viewController.你可以看到VC2没有正确布局.

我发现屏幕上还没有显示视图. safeAreaInsets总是0.

vc2.view.setNeedsLayout()滚动结束时,我可以调用以解决此问题.但滚动结束前布局不正确.

文件

如果视图当前未安装在视图层次结构中,或者在屏幕上尚未显示,则此属性中的边缘插入为0.

那么我该如何解决这个问题呢.

在此输入图像描述

自动布局 在此输入图像描述 在此输入图像描述

aja*_*ayb 8

而不是引用当前视图的safeAreaInsets,将其设置为UIApplication:

(UIApplication.shared.delegate?.window??.safeAreaInsets.bottom)
Run Code Online (Sandbox Code Playgroud)


jon*_*ren 0

如果我看得正确,您的容器视图固定在其超级视图的顶部和底部。将其固定到安全区域,您的子视图控制器将正确布局。

  • 不,我希望容器视图与 superView 大小相同。 (3认同)