15

当我尝试在我的视图控制器中检索 viewDidLoad 中的 safeAreaInsets 时,它在 iPhone X 上返回 (0, 0, 0, 0),我知道这是错误的。文档说,如果视图不是层次结构的一部分或视图不可见,就会发生这种情况。所以我的问题是,检索 safeAreaInsets 然后使用这些插图布局我的子视图的最佳位置在哪里?

4

1 回答 1

20

您需要使用viewDidLayoutSubviews而不是viewDidLoad.

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    // your layout code here
}

注意:viewDidLoad只调用一次不同,viewDidLayoutSubviews通常会调用多次。确保只在内部设置框架viewDidLayoutSubviews,并且不要执行应该只发生一次的操作,例如添加子视图。

于 2017-09-19T01:26:54.367 回答