safeAreaInsets return viewDidLoad 中的错误值,哪里是获取它的最佳位置?

safeAreaInsets return wrong values in viewDidLoad, where's the best place to get it?

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

您需要使用 viewDidLayoutSubviews 而不是 viewDidLoad

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

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