当我尝试在视图控制器中检索viewDidLoad中的safeAreaInsets时,它会在iPhone X上返回(0,0,0,0),我知道这是错误的.文档说如果视图不是层次结构的一部分或视图不可见,则会发生这种情况.所以我的问题是,检索safeAreaInsets然后使用这些插图布局我的子视图的最佳位置在哪里?
你需要使用viewDidLayoutSubviews
而不是viewDidLoad
.
override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() // your layout code here }
注意:与viewDidLoad
仅调用一次相比,viewDidLayoutSubviews
通常称为多次.确保仅在内部设置框架viewDidLayoutSubviews
,并且不执行仅发生一次的操作,例如添加子视图.