这也在Why does this iPhone X UIView not get safeAreaLayoutGuide?
中进行了描述但未得到解答我创建了一个全新的从头开始的单视图通用iOS应用程序,并将仅这三行代码添加到viewDidLoad()
。我以纵向模式启动iPhone X Simulator。这就是我得到的:
let safeSize = view.safeAreaLayoutGuide.layoutFrame.size
// Returns (375.0, 812.0) — why full size?
let window = UIApplication.shared.delegate!.window!!
let safeSize2 = window.safeAreaLayoutGuide.layoutFrame.size
// Returns (375.0, 734.0) — this is what I expected.
为什么根视图控制器的根视图不会返回预期的安全区域?
答案 0 :(得分:1)
<强> SafeAreaInsets:强>
通过在其中应用insets来获取视图的安全区域 属性到视图的边界矩形。如果视图当前不是 安装在视图层次结构中,或者尚未在屏幕上可见, 此属性中的edge insets为0。
SafeAreaLayoutGuide:
也是如此当视图在屏幕上可见时,本指南会反映该部分 导航栏,标签栏,工具栏未覆盖的视图, 和其他祖先观点。
因此,由于视图尚未在viewDidLoad
中显示或可见,因此它为0 ..当您在viewDidLayoutSubviews
中执行此操作时,您将看到它为非零且设置了有效的插入