iOS safeAreaLayoutGuide为iPhone X提供完整的812高度

时间:2018-05-13 18:37:48

标签: ios iphone-x safearealayoutguide

这也在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.

为什么根视图控制器的根视图不会返回预期的安全区域?

1 个答案:

答案 0 :(得分:1)

<强> SafeAreaInsets:

  

通过在其中应用insets来获取视图的安全区域   属性到视图的边界矩形。如果视图当前不是   安装在视图层次结构中,或者尚未在屏幕上可见,   此属性中的edge insets为0。

SafeAreaLayoutGuide:

也是如此
  

当视图在屏幕上可见时,本指南会反映该部分   导航栏,标签栏,工具栏未覆盖的视图,   和其他祖先观点。

因此,由于视图尚未在viewDidLoad中显示或可见,因此它为0 ..当您在viewDidLayoutSubviews中执行此操作时,您将看到它为非零且设置了有效的插入